';对于文件名中的文件名:';导致IOError:[Errno 2]没有这样的文件或目录:';t';python

';对于文件名中的文件名:';导致IOError:[Errno 2]没有这样的文件或目录:';t';python,python,file,iteration,Python,File,Iteration,我想在一个包含所有信息的文件中添加两个或多个文件。我的代码是: def add_file(filenames, output_file): with open(output_file, 'w') as master_file: master_file.write('C/A,UNIT,SCP,DATEn,TIMEn,DESCn,ENTRIESn,EXITSn\n') for filename in filenames: with op

我想在一个包含所有信息的文件中添加两个或多个文件。我的代码是:

def add_file(filenames, output_file):
    with open(output_file, 'w') as master_file:
        master_file.write('C/A,UNIT,SCP,DATEn,TIMEn,DESCn,ENTRIESn,EXITSn\n')
        for filename in filenames:
            with open(filename, 'r') as infile:
                master_file.write(infile.read())
当我调用以放置所有文件时,如下所示:

add_file('turnstile_170603.txt','out.txt')
展示:

IOError:[Errno 2]没有这样的文件或目录:“t”


为什么??我做错了什么?

您以
文件名的形式传递了一个字符串,函数通过字符对其进行迭代。而是传递一个列表。最好将函数从
add_file
重命名为
add_files


小心使用
out.txt
;如果要调用此函数1次以上,应以追加模式而不是“w”模式打开它

您传递了一个字符串作为
文件名
,函数通过字符对其进行迭代。而是传递一个列表。最好将函数从
add_file
重命名为
add_files


小心使用
out.txt
;如果要调用此函数1次以上,应以追加模式而不是“w”模式打开它

您正在为
文件名
传递一个字符串,因此函数将在该字符串中进行迭代。传递一个列表以解决此问题。

您正在为
文件名传递一个字符串,因此函数将在该字符串中进行迭代。传递列表以修复此问题

for filename in filenames:
上面的一行通过您的第一个参数一次迭代一个,该参数恰好是一个字符串

当你打这个电话的时候

with open(filename, 'r') as infile:
“filename”是作为项目存在于文件名中的内容。一旦到达字符串的第一个字母,就会发生错误

上面的一行通过您的第一个参数一次迭代一个,该参数恰好是一个字符串

当你打这个电话的时候

with open(filename, 'r') as infile:

“filename”是作为项目存在于文件名中的内容。当到达字符串的第一个字母时,就会发生错误。

您正在为
文件名
传入一个字符串,因此它会在字符串中迭代当
文件名
是字符串而不是列表时,它会迭代字符串的各个字母,而不是您想要的。如果您的字符串确实包含(以空格分隔的)列表,请首先使用
.split
命令生成列表。您正在为
文件名
传入一个字符串,因此它在字符串中进行迭代当
文件名
是字符串而不是列表时,它会迭代字符串的各个字母,而不是您想要的字母。如果您的字符串确实包含(以空格分隔的)列表,请首先使用
.split
命令生成列表。或其他一些iterable。或其他一些iterable。