2016-07-15 56 views
-7

我有一個包含在目錄中的.txt文件列表。每個文件可能有多行。 Python腳本可能會剝離該目錄中包含的所有文件的所有換行符?結果文件應該只有一行包含所有文本。Python腳本從包含在目錄中的.txt文件中去除新行

import os 
os.chdir("/home/Pavyel/Desktop/Python Programs") 

for i in os.listdir(os.getcwd()): 
    if i.endswith(".txt") : 
    f = open(i) 
    contents = f.read() 
    new_contents = contents.replace('\n', '') 
    print i 
    continue 
else: 
    continue 
+4

可能有很多腳本......你有沒有試過寫一個呢? – mhawke

+0

進口OS os.chdir( 「/家/ iitp /桌面/ Python程序」) 因爲我在os.listdir(os.getcwd()): 如果i.endswith( 「TXT」): ˚F =開放(I) 內容= f.read() new_contents = contents.replace( '\ n', '') 打印我 繼續 其他: 繼續 – Pavyel

回答

-1
import os 
import sys 
import fileinput 

dir = "." #Directory to scan for files 

file_list = os.listdir(dir) 

for file in file_list: 
    if file.endswith(".txt"): 
     with fileinput.FileInput(file, inplace=True, backup=".bak") as f: 
      for line in f: 
       sys.stdout.write(line.replace("\n", "")) 

這也將創建編輯的所有文件進行備份,以防萬一。
如果您不希望備份從第7個刪除, backup=".bak"

+0

問題這一行:打印(line.replace( 「\ n」,「」),end =「」) – Pavyel

+0

@Pavyel **您正在運行Python的不兼容版本。最有可能的是Python 2,因爲它不支持新的打印功能。該腳本在我的電腦上工作得很好。無論如何,我已經更改了代碼,因此可以與更多的Python版本一起使用。 – Janekmuric

0

使用glob.glob()找到感興趣的文件,即那些以.txt結尾的文件。​​3210返回匹配文件名的列表,並且保持路徑不變,因此您不需要更改目錄。

過程與fileinput.input()到位文件:

import fileinput 
from glob import glob 

pattern = '/home/Pavyel/Desktop/Python Programs/*.txt' 
files = glob(pattern) 
if files: 
    with fileinput.input(files, inplace=True) as f: 
     for line in f: 
      print(line.rstrip('\n'), end='') 

如果您正在使用Python 2中它可能是值得傳遞mode='U'fileinput.input(),以確保通用換行符處理被啓用,因爲是Python 3的默認值。通過啓用該功能,無論代碼運行的平臺如何,您都可以確定\n將匹配換行符。

相關問題