我想寫一個這樣的程序:在一個文件夾中,我有n文件數量;首先讀取一個文件並執行一些操作,然後將結果存儲在單獨的文件中。然後讀取第二個文件,再次執行操作並將結果保存到新的第二個文件中。執行n文件數量相同的程序。程序逐個讀取所有文件並分別存儲每個文件的結果。請舉例說明我如何做到這一點。如何讀取和寫入多個文件?
7
A
回答
11
import sys
# argv is your commandline arguments, argv[0] is your program name, so skip it
for n in sys.argv[1:]:
print(n) #print out the filename we are currently processing
input = open(n, "r")
output = open(n + ".out", "w")
# do some processing
input.close()
output.close()
然後調用它像:
./foo.py bar.txt baz.txt
5
您可能會發現fileinput
模塊有用。它專爲這個問題而設計。
7
我想你錯過的是如何檢索該目錄中的所有文件。 爲此,請使用glob模塊。 這裏是將.TXT複製所有擴展名的文件*與擴展名爲*文件.OUT
import glob
list_of_files = glob.glob('./*.txt') # create the list of file
for file_name in list_of_files:
FI = open(file_name, 'r')
FO = open(file_name.replace('txt', 'out'), 'w')
for line in FI:
FO.write(line)
FI.close()
FO.close()
0
聯合答案納入目錄或文件名的參數具體名單爲例:
import sys
import os.path
import glob
def processFile(filename):
fileHandle = open(filename, "r")
for line in fileHandle:
# do some processing
pass
fileHandle.close()
def outputResults(filename):
output_filemask = "out"
fileHandle = open("%s.%s" % (filename, output_filemask), "w")
# do some processing
fileHandle.write('processed\n')
fileHandle.close()
def processFiles(args):
input_filemask = "log"
directory = args[1]
if os.path.isdir(directory):
print "processing a directory"
list_of_files = glob.glob('%s/*.%s' % (directory, input_filemask))
else:
print "processing a list of files"
list_of_files = sys.argv[1:]
for file_name in list_of_files:
print file_name
processFile(file_name)
outputResults(file_name)
if __name__ == '__main__':
if (len(sys.argv) > 1):
processFiles(sys.argv)
else:
print 'usage message'
1
我我剛剛剛學到了os.walk()命令,它可能會幫助你。它允許你沿着目錄樹結構走下去。
import os
OUTPUT_DIR = 'C:\\RESULTS'
for path, dirs, files in os.walk('.'):
for file in files:
read_f = open(os.join(path,file),'r')
write_f = open(os.path.join(OUTPUT_DIR,file))
# Do stuff
0
from pylab import *
import csv
import os
import glob
import re
x=[]
y=[]
f=open("one.txt",'w')
for infile in glob.glob(('*.csv')):
# print "" +infile
csv23=csv2rec(""+infile,'rb',delimiter=',')
for line in csv23:
x.append(line[1])
# print len(x)
for i in range(3000,8000):
y.append(x[i])
print ""+infile,"\t",mean(y)
print >>f,""+infile,"\t\t",mean(y)
del y[:len(y)]
del x[:len(x)]
相關問題
- 1. Python:讀取和寫入多個文件
- 2. 如何讀取和寫入文件
- 3. C++如何讀取和寫入文件
- 4. 如何讀取和寫入XML文件?
- 5. 如何讀取和寫入文件
- 6. 異步讀取/寫入多個文件
- 7. 讀取和寫入文件
- 8. 讀取和寫入文件
- 9. 讀取和寫入文件
- 10. 寫入和讀取文件
- 11. 讀取多個文件並寫入多個輸出文件
- 12. 讀取和寫入同一個文件
- 13. 讀取和寫入一個txt文件
- 14. 寫入和讀取同一個文件
- 15. 多線程,讀取多個文件並寫入新文件
- 16. 導入和讀取多個文件R
- 17. 如何從一個目錄中的多個文件讀取和寫入? Python
- 18. Node.js fs cheerio讀取和寫入多個文件
- 19. 從IDL中的多個HDF文件讀取和寫入數組
- 20. Python:嘗試讀取和寫入多個文件時發出
- 21. 並行讀取和寫入多個文件
- 22. 多個用戶訪問RDF文件進行讀取和寫入
- 23. 使用Java在文件中寫入和讀取多個字節[]
- 24. 讀取和寫入文本文件
- 25. Java - 讀取和寫入文本文件
- 26. 如何使用Ruby讀取和寫入同一個EXCEL文件?
- 27. 從多個文件讀取/寫入文本到主文件
- 28. 如何讀取/寫入xml文件?
- 29. 如何讀取,寫入gwan的文件
- 30. 如何讀取/寫入ASCII .pgm文件
功課??檢查海報的歷史 – 2008-10-16 11:27:05
也許。但與此同時,我自己也只是在學習Python,似乎是一種很好的練習,可以提醒自己,我不會把頭撞在牆上。如果他不在乎自己學習這個級別的東西,那麼我該爭論誰呢?在一天結束時,如果你考試不及格,你仍然失敗。 – 2008-10-16 11:30:44
我把它標記爲家庭作業;提問和回答作業問題都在網站的名單中,但是爲了提問者的利益,我希望我們首先要求他們提供目前無法使用的代碼。 – tzot 2008-10-16 11:42:56