Python代码打开多个文件并写入新文件

0 投票
1 回答
3405 浏览
提问于 2025-04-17 17:57

我写了一个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

撰写回答