在python中将多个文件循环到单个csv文件中
我正在尝试使用python将多个文件处理为一个合并的csv文件。到目前为止,我已经在python中将多个文件循环到单个csv文件中,python,list,file,Python,List,File,我正在尝试使用python将多个文件处理为一个合并的csv文件。到目前为止,我已经 files = ["file1.txt", "file2.txt", "file3.txt"] def doSomething(oldfile): content = [] with open oldfile as file: content = file.read().splitlines() file.close() return content.revers
files = ["file1.txt", "file2.txt", "file3.txt"]
def doSomething(oldfile):
content = []
with open oldfile as file:
content = file.read().splitlines()
file.close()
return content.reverse()
with open("newfile.txt", "w") as file:
w = csv.writer(file, dialect = "excel-tab")
for i in range(0, len(files)):
w. writerows(doSomething(files[i])
file.close()
正在创建新文件,但其中没有任何内容。我对正在发生的事很好奇
谢谢 对于初学者,
list.reverse()
在适当的位置反转列表,不返回任何内容,因此实际上是从doSomething()
函数返回None
。实际上,您需要将其拆分为两行:
content.reverse()
return content
如果您想简化代码,这里有一个建议:
def doSomething(oldfile):
with open(oldfile, "r") as f:
return reversed(f.read().splitlines())
files = ["file1.txt", "file2.txt", "file3.txt"]
with open("newfile.txt", "wb") as file:
w = csv.writer(file, dialect = "excel-tab")
for current_file in files:
w.writerows(doSomething(current_file))
我认为你的程序崩溃有几个原因:
open(..)
是一个函数,因此您不能写入:
with open oldfile as file:
with
语句用于强制关闭文件,因此实际上不需要file.close()
.reverse()
在原地工作:它返回None
,您可以使用reversed(…)
files = ["file1.txt", "file2.txt", "file3.txt"]
def doSomething(oldfile):
content = []
with open(oldfile,'r') as file:
return list(reversed(file))
with open("newfile.txt", "w") as file:
w = csv.writer(file, dialect = "excel-tab")
for oldfile in files:
w.writerows(doSomething(oldfile))
files=[“file1.txt”、“file2.txt”、“file3.txt”]
def剂量测量(旧文件):
内容=[]
打开(旧文件,'r')作为文件:
返回列表(已反转(文件))
打开(“newfile.txt”、“w”)作为文件:
w=csv.writer(文件,方言=“excel选项卡”)
对于文件中的旧文件:
w、 writerows(doSomething(旧文件))
我还在列表上使用了
for
循环,而不是索引,因为这更“pythonic”。此外,文件
可以覆盖其行。因此,可以使用reversed(file)
反向获取文件的行。将openoldfile作为文件:
如果这行是逐字复制的,我很惊讶它会运行。另外,作为pythonic的一个方面,将for循环替换为for file in files:w.writerows(doSomething(file))
。