2017-08-01 15 views
0

我有一段代碼在Python中對文件進行一些更改。我希望在文件夾的多個文件上執行該操作。我寫了下面的代碼來做到這一點:在Linux和Python中的高級文件處理

進口重新 進口OS 文件= os.listdir( 「/家/ intucell/tarfiles」) 文件中的文件: 計劃生育=打開(文件, 'R' ) 在FP行: 打印(line.replace( '4.0.0', '5.0.0')) f.close()

我想要的代碼到一個文件夾中的多個文件被稱爲運行tarfiles。這些文件的名稱必須從該文件夾的列表中讀取。但是,Linux不讀取包含空格的文件名。我的名字中有大約100個包含空格的文件。我該如何解決它?

+2

你應該看看這個破分成兩個步驟: 1.把你的代碼放到一個函數塔取一個文件名的參數。 2.迭代你的文件名列表,調用這個函數。 –

回答

0

你可以對這個使用for循環。例如

import os 
item_list = next(os.walk(your_directory_path))[1] 
for i in item_list: 
    fp = open (str(i), 'r') 
    for line in fp: print(line.replace (' 4.0.0 ', ' 5.0.0 ')) 
     print(re.sub(r'\b4.0.0[^.]', '5.0.0 ', line)) 

我希望這將有助於

0

假設filelist你想要的工作,你有文件的列表,你可以簡單地使用:

import re 
for filename in filelist: 
    fp = open (filename, 'r') 
    for line in fp: print(line.replace (' 4.0.0 ', ' 5.0.0 ')) 
     print(re.sub(r'\b4.0.0[^.]', '5.0.0 ', line))` 

或者你需要尋找的文件夾中的文件?

0

可以使用os.listdir,假設你要更改的多個文件夾中存儲在PATH變量,則:

files = os.listdir(path) 
for _file in files: 
    fp = open (_file, 'r') 
    for line in fp: 
     print(line.replace (' 4.0.0 ', ' 5.0.0 ')) 
     print(re.sub(r'\b4.0.0[^.]', '5.0.0 ', line)) 

編輯: 也不要忘記import os