我在一个文件中有大量的条目。我叫它文件A
文件A:
('aaa.dat', 'aaa.dat', 'aaa.dat')
('aaa.dat', 'aaa.dat', 'bbb.dat')
('aaa.dat', 'aaa.dat', 'ccc.dat')
我想在一个程序中逐行使用这些条目,该程序将迭代地从文件a中选取条目,并以这种方式连接文件:
filenames = ['aaa.dat', 'aaa.dat', 'ccc.dat'] ###entry number 3
with open('out.dat', 'w') as outfile: ###the name has to be aaa-aaa-ccc.dat
for fname in filenames:
with open(fname) as infile:
outfile.write(infile.read().strip())
我所需要做的就是迭代地替换文件名,并在“aaa”中创建一个输出-aaa.dat公司“格式。我会很感激任何帮助--感觉有点失落!你知道吗
多谢!!!你知道吗
像这样:
您可以通过以下方式检索和修改文件名:
这个程序逐行读取您的输入文件,这里的文件名为
fnames.txt
,其结构与您的文章完全相同。对于每一行,它使用一个预编译的regex(预编译regex在这里是合适的,应该会使事情变得更快)。这假设您的文件名只是字母数字字符,因为regex用空格替换所有非字母数字字符。你知道吗它只检索
'aaa'
和dat
条目作为每行的字符串列表,并通过连接从0开始的第二个条目并向其添加.dat
扩展名来形成一个新名称。它在post中使用-
连接。你知道吗然后通过从
line
中选择第二个条目,检索各个文件名,从中将内容提取到列表content
。你知道吗最后,它读取
content
中的每个文件,并将它们写入公共文件new_name
。如果这些文件很大的话,它会在一个位置上读取所有这些文件,这可能是一个问题,一般来说,可能有更有效的方法来完成这一切。另外,如果您计划在编写之前对旧文件中的内容执行更多操作,请考虑将旧文件特定的操作移动到单独的函数中,以提高可读性和任何潜在的调试。你知道吗如果您的问题只是计算新的文件名,那么使用^{} 如何?你知道吗
如果你这样看的话,可能会更好地理解:
但是:如果您的问题是无法通过逐行读取文件来获取列表中的
filenames
,则必须记住,当您读取文件时,将获取文本(字符串)而不是Python结构。您需要从如下文本重建list
:"('aaa.dat', 'aaa.dat', 'aaa.dat')\n"
。你知道吗您可以查看^{} 或尝试自己重建它。下面的代码输出许多消息来显示发生了什么:
相关问题 更多 >
编程相关推荐