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

Python 如何将单行复制到每个行的单个文件中,python,matrix,file-io,Python,Matrix,File Io,我不知道代码出了什么问题,它没有从shell中得到任何类型的错误消息。 我想做的是: 将目录中的所有列表文件合并到单个列表中(每行一列一个字符串)-完成 将该列表与一个大文件进行比较,并将每一行的对应行复制到一个新的文件中—(可能?)完成!但不起作用=/ 将步骤2中的文件保存到新的输出目录中。-不工作 从大文件中删除相应的行并将其保存在同一输出目录中-不知道。(也许是流行音乐?) 是否可以使用步骤2中使用的相同字符串将输出命名为“singlelinefiles”?有人能告诉我怎么做吗? 非常感谢

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

  • 将目录中的所有列表文件合并到单个列表中(每行一列一个字符串)-完成
  • 将该列表与一个大文件进行比较,并将每一行的对应行复制到一个新的文件中—(可能?)完成!但不起作用=/
  • 将步骤2中的文件保存到新的输出目录中。-不工作
  • 从大文件中删除相应的行并将其保存在同一输出目录中-不知道。(也许是流行音乐?)
  • 是否可以使用步骤2中使用的相同字符串将输出命名为“singlelinefiles”?有人能告诉我怎么做吗? 非常感谢

    以下是迄今为止的代码:

    #!/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
    
    #/usr/bin/python
    导入操作系统、系统、全局
    #用法:thisone.py
    lists=glob.glob(sys.argv[1]+'*.txt')
    listsmatrix=[]
    对于行输入列表:
    listsmatrix.append(line.strip().split('\n'))
    majorfile=open(sys.argv[2],'r')
    majormatrix=[]
    对于majorfile中的行:
    majormatrix.append(line.strip().split('\t'))
    os.mkdir(sys.argv[3])
    i=0
    对于majormatrix中的行:
    如果listsmatrix中的第[0]行:
    outfile=open(sys.argv[3]+“文件”+str(i),“w”)
    输出文件。写入(行)
    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
    

    谢谢你,伙计!但它仍然不起作用。现在,它创建了输出文件,但在output_目录外只是一个空文件。