Python代码打开多个文件并写入新文件
我写了一个Python代码,这段代码可以从一个文件中提取特定的信息,然后把这些信息写入一个新文件。我会对多个文件重复这个过程。
在下面的代码中,你可以看到我有两个参数,第一个是新文件的名字,第二个是要读取的文件。因此,我在终端中的命令行看起来像这样:“python code.py newfile readfile”。我想修改代码,让我可以一次读取和写入多个文件,这样我在终端中的命令行就可以像这样:“python code.py newfile1 readfile1 newfile2 readfile2 newfile3 readfile3”……依此类推,每个要读取的文件都有一个对应的新文件来写入。
任何帮助都非常感谢。
这是我的代码:
import sys
import re
filetowrite = sys.argv[1]
filetoread = sys.argv[2]
newfile = str(filetowrite) + ".txt"
openold = open(filetoread,"r")
opennew = open(newfile,"w")
rline = openold.readlines()
number = int(len(rline))
start = 0
for i in range (len(rline)) :
if "2theta" in rline[i] :
start = i
opennew.write ("q" + "\t" + "I" + "\n")
opennew.write ("1/A" + "\t" + "1/cm" + "\n")
opennew.write (str(filetowrite) + "\t" + str(filetowrite) + "\n")
for line in rline[start + 1 : number] :
words = line.split()
word1 = (words[1])
word2 = (words[2])
opennew.write (word1 + "\t" + word2 + "\n")
openold.close()
opennew.close()
1 个回答
1
正如其他人提到的,你似乎想要逐个处理文件,而不是一次性处理所有文件。你可以使用 os.listdir() 方法来获取你指定目录下所有文件的列表:
import os;
os.listdir("aDirectoryHere")
这个方法会返回一个可以逐个遍历的文件列表。
方法的详细说明可以查看这里: http://docs.python.org/2/library/os.html#os.listdir
在你编辑问题后
你可以遍历 sys.argv 列表来查找任意数量的参数。
import sys;
for index, arg in enumerate(sys.argv):
print index, arg;
print "total:", len(sys.argv);
根据你的示例,你可以查看每个索引 +2 来找到输出文件名,然后再 +1 来获取对应的输入文件名。
这有点偏题,但有趣的是,我还发现了 FileInput 模块。我之前从未见过这个模块,但看起来也可能很有用: http://docs.python.org/2/library/fileinput.html