Python 3.x 如何打开多个文件路径?
我现在有了一个文件,其中有一个文件路径列表。我想循环打开它们读写。有人能建议怎么做吗?到目前为止,我所看到的只是读取这些行并打印出来,我希望我的代码能够打开这些路径。下面是路径文件的一部分:Python 3.x 如何打开多个文件路径?,python-3.x,read-write,file-link,Python 3.x,Read Write,File Link,我现在有了一个文件,其中有一个文件路径列表。我想循环打开它们读写。有人能建议怎么做吗?到目前为止,我所看到的只是读取这些行并打印出来,我希望我的代码能够打开这些路径。下面是路径文件的一部分: E:\Grad\LIS\LIS590 Text mining\Part1\Part1\awards_1994\awd_1994_96\a9496340.txt E:\Grad\LIS\LIS590 Text mining\Part1\Part1\awards_1994\awd_1994_96\a949634
E:\Grad\LIS\LIS590 Text mining\Part1\Part1\awards_1994\awd_1994_96\a9496340.txt
E:\Grad\LIS\LIS590 Text mining\Part1\Part1\awards_1994\awd_1994_96\a9496341.txt
E:\Grad\LIS\LIS590 Text mining\Part1\Part1\awards_1994\awd_1994_96\a9496342.txt
E:\Grad\LIS\LIS590 Text mining\Part1\Part1\awards_1994\awd_1994_96\a9496343.txt
E:\Grad\LIS\LIS590 Text mining\Part1\Part1\awards_1994\awd_1994_96\a9496344.txt
E:\Grad\LIS\LIS590 Text mining\Part1\Part1\awards_1994\awd_1994_96\a9496345.txt
E:\Grad\LIS\LIS590 Text mining\Part1\Part1\awards_1994\awd_1994_96\a9496346.txt
E:\Grad\LIS\LIS590 Text mining\Part1\Part1\awards_1994\awd_1994_96\a9496347.txt
E:\Grad\LIS\LIS590 Text mining\Part1\Part1\awards_1994\awd_1994_96\a9496348.txt
E:\Grad\LIS\LIS590 Text mining\Part1\Part1\awards_1994\awd_1994_96\a9496349.txt
E:\Grad\LIS\LIS590 Text mining\Part1\Part1\awards_1994\awd_1994_96\a9496350.txt
E:\Grad\LIS\LIS590 Text mining\Part1\Part1\awards_1994\awd_1994_96\a9496351.txt
...
这是我正在尝试的代码:
def work_on(r'E:\Grad\LIS\LIS590 Text mining\file+test.txt'): # The last quotation mark gives me that error. I also tried double quotation mark, didn't work either.
with open(r'E:\Grad\LIS\LIS590 Text mining\file+test.txt', 'r') as data_file:
with open('file_list.txt', 'r') as file_list: #file_list.txt is the file name I saved all the paths.
for filename in file_list:
with open(filename, 'r') as data_file:
work_on(filename)
一般流程与打印行相同-唯一的区别是不使用
print()
您将执行其他工作(在本例中,打开文件并使用它):
然后,如果有意义,您可以将第二项工作分解为单独的函数:
def work_on(data_file_path):
with open(data_file_path, 'r') as data_file:
# work with data_file here
这将使您的工作循环简化为:
with open('/your/file/list.txt', 'r') as file_list:
for filename in file_list:
work_on(filename)
谢谢你的建议。我刚开始学习Python,所以我对这段代码有几个问题。首先,上面使用的“/your/file/list.txt”和数据文件路径之间有什么区别?还有,这些部分是如何组合的?@Q-ximi-
your/file/list.txt
是您在问题中提供的一部分文件列表。当你在一个打开的文件上迭代时,你每次迭代得到一行(例如,对于文件中的行
),因此数据文件路径
是你数据列表中的一个条目。谢谢你的澄清。我想这是相当基本的,但我不确定我是否以正确的方式将代码组合在一起。它不断给我一条错误消息:“SyntaxError:EOL while scanning string literal”,用于def
行后面的单引号。我在帖子中更新了代码。谢谢。@Q-ximi-函数定义不应该有字符串文字,因为它的参数名是:-)定义的要点是定义一个函数,该函数使用将在函数体中使用的参数。所以def work\u on(某些参数)
,而不是def work\u on(“某些值”)
。这有意义吗?@Q-ximi-我回答中的第三个代码块是如何将它们组合在一起:-)您只需要在这里填写#使用数据(work with data)文件
块。尝试在一个文件中使用块#2和#3,只需对#工作使用打印(数据文件路径)
。我的问题是我不知道该使用哪个函数。现在正在阅读输入和输出,但还没有弄清楚它们是否正确。下面肖恩·维埃拉的例子回答了您的问题。感谢您的澄清。我想这是相当基本的,但我不确定我是否以正确的方式将代码组合在一起。它不断给我一条错误消息:“SyntaxError:EOL while scanning string literal”作为defline后面的单引号。我在帖子中更新了代码。谢谢
with open('/your/file/list.txt', 'r') as file_list:
for filename in file_list:
work_on(filename)