2016-03-28 16 views
0

Komut dosyasının yazıldığı dizinden farklı bir dizinde dosyalar arasında geçiş yapmakta zorlanıyorum. İdeal olarak script'imin sasa ile başlayan tüm dosyalara gitmesini de isterdim. Ben pencere Powershell ile Python Sürüm 2.7 kullanmak böyle sasa.2 vb sasa.1 ... yanı sıra doc1.pdf gibi diğer dosyalar, doc2.pdfPython: Farklı bir dizindeki dosyalar arasında geçiş yapmak ve verileri taramak

olarak klasördeki dosyaların bir çift vardır C:Users\user\python_project

2) Main_Directory ex: C:Users\user\Desktop\Data

Everything

1) Python Senaryo Yer ex

yerler

3) Current_Working_Directory örn: C:Users\user\python_project

Ana dizin klasör A, B, C, D vb ..) Bu klasörlerin her biri ilgi sasa dosyaları dahil birçok dosya içerir (100 klasörleri içerir. 1 dosya için aşağıdaki eserlerini senaryoyu

çalışan en

girişimleri:

Senaryo şu şekilde çalıştırılır

: Ancak python script1.py

file_path = 'C:Users\user\Desktop\Data\A\sasa.1 

def writing_function(file_path): 
    with open(file_path) as file_object: 
     lines = file_object.readlines() 

for line in lines: 
print(lines) 

writing_function(file_path) 

aşağıdaki

çalışmıyor

Komut dosyası aşağıdaki şekilde çalışır: python script1.py A sasa.1

import os 
import sys 
from os.path import join 

dr = sys.argv[1] 
file_name = sys.argv[2] 

file_path = 'C:Users\user\Desktop\Data' 
new_file_path = os.path.join(file_path, dr) 
new_file_path2 = os.path.join(new_file_path, file_name) 

def writing_function(paths): 
    with open(paths) as file_object: 
     lines = file_object.readlines() 

for line in lines: 
    print(line) 

writing_function(new_file_path2) 

aşağıdaki hatayı alıyorum:

with open(paths) as file_object:
IO Error: [Errno 2] No such file or directory:
'C:Users\\user\\Desktop\\A\\sasa.1'

Şimdilik sadece bir dosya üzerinde çalışıyorum, ben her döngü muktedir istiyorum unutmayın klasördeki sasa dosyaları. değişkeni dir kullanarak

import os 
from os.path import join 

def function_exec(file): 
    code to execute on each file 

for root, dirs, files in os.walk('path/to/your/files'): # from your argv[1] 
    for f in files: 
     filename = join(root, f) 
     function_exec(filename) 

kaçının:

+0

'os.walk' kullanmayı düşünün – chapelo

cevap

0

O hattında bir şey olabilir. bu bir python anahtar kelimesidir.Deneyin print(dir(os))

dir_ = argv[1] # is preferable 
+0

Sadece argv'deki klasör ismini veya dosya yolunun tamamını geçmek zorunda mıyım? İdeal olarak, sadece klasörün adını argüman içine koymak isterdim. Kodun tüm yolu ana klasöre kadar olabilir, ancak kullanıcı adı klasörünün adını koymak istiyorum. dosyaları içerir. –

+0

"os.path.join()' ifadesini kullanarak, "2) Main_Directory ex: C: Users \ user \ Desktop \ Data" verilerinizin bulunduğu bir temel dizine ve kullanıcının girdiği dizinlere erişebilirsiniz. Https://docs.python.org/3/library/os.path.html?highlight=join#os.path.join – chapelo

+0

adresindeki belgelere bakın. Dizin geçerli dizininizle ilişkiliyse, bunu da kullanabilirsiniz. 'os.getcwd()' – chapelo

0

Ayrıca öyleyse, hiç kimse şimdiye kadar glob söz

os.chdir(path) 
+0

Klasör adını dizine geçirirken os.chdir (folder_name) kullanmayı denedim. Tüm yolu bilmeden nasıl geçebilirim? –

İlgili konular