2016-06-06 52 views
0

我有多個循環的文件。如果一個單獨的文件沒有一定的長度,那麼我想掩蓋該文件中的行,以便它不被使用,但是對於將來我需要做的某些計算,形狀保持不變。到目前爲止,這是我的代碼:在文件末尾添加x個新行Python

pattern = "C:\Users\Name\Folder\july\mid_2014-07-2?-00.csv" 
bad_files=[] 
for filename in glob.iglob(patterm): 
    num_lines = sum(1 for line in open(filename)) 
    if num_lines!=144: 
     s = 144 - num_lines 
     bad_files.append(filename) 
print bad_files 

這到目前爲止返回所有沒有在他們144行的文件列表。我想要做的是,如果文件中沒有144行(例​​如說它有127行),那麼我想在文件末尾添加's'空行數以使它有144行。然後,我想掩蓋文件中的所有行,以便爲我想要的形狀保留形狀,但這些行不會用於某些計算。有沒有一種方法可以在這個循環中添加一個語句,在文件的末尾添加's'的空行數,還有一個語句掩蓋壞文件中的每一行?是否有更簡單的方法來實現我想要做的事情,我應該考慮?

+2

我還沒有測試過這個,但我不禁想知道它是否像'filename.write('\ n'* s)'一樣簡單''。 –

+0

@MattCremeens它的作品。剛剛解僱了口譯員並對其進行了測試。 –

+0

謝謝@ThomasMurphy。此外,不知道什麼是「...掩蓋壞文件中的每一行?」 –

回答

0

如果你並不真正需要處理的文件名列表,那麼這可以摺疊到:

for filename in glob.iglob(pattern): 
    with open(filename, 'r+a') as fd: 
     for num_lines, line in enumerate(fd): pass 
     # num_lines is now one *less* that the actual line count. 
     fd.write('\n' * max(0, 144 - num_lines)) 

請注意,你不能做filename.write()因爲文件名是串。 編寫在文件描述符上工作。