如何将每行的单行复制到单个文件中



我不知道代码出了什么问题,它不会从 shell 中得到任何类型的错误消息。 我想做的是:

  1. 将目录中的所有列表文件合并为一个列表(一列,每行一个字符串) - 完成!
  2. 将该列表与大文件进行比较,并将每个相应的行复制到每行的新文件中 - (也许?但不起作用。=/
  3. 将步骤 2 中的文件保存在新output_directory中。 - 不起作用。
  4. 从大文件中删除相应的行并将其保存在同一个output_directory中 - 不知道。(也许流行?

是否可以使用与步骤 2 中相同的字符串将输出命名为"单行文件"?谁能告诉我怎么做? 将不胜感激

这是到目前为止的代码:

#!/usr/bin/python
import os, sys, glob
#use: thisone.py <lists_dir><majorfile><out_dir>
lists = glob.glob(sys.argv[1]+ '*.txt')
listsmatrix = []
for line in lists:
listsmatrix.append(line.strip().split('n'))
majorfile = open(sys.argv[2],'r')
majormatrix = []
for line in majorfile:
majormatrix.append(line.strip().split('t'))
os.mkdir(sys.argv[3]) 
i=0
for line in majormatrix:
if line [0] in listsmatrix:
outfile = open(sys.argv[3]+ 'file'+str(i), 'w')
outfile.write(line)
outfile.close()
i+=1

我会感谢你的任何帮助。

当您使用"w"打开文件时,文件将被清除。因此,每次打开文件时,新行都会覆盖前一行。

两种可能的解决方案:

1)将"w"替换为"a",这样你就要附加到文件而不是覆盖它。

2)打开文件一次,最好使用"with"块,以便即使发生异常,文件也能正确关闭:

with open(sys.argv[3]+ 'file'+str(i), 'w') as outfile:
for line in majormatrix:
if line [0] in listsmatrix:
outfile.write(line)
i+=1

最新更新