我必须将两个目录与其中的.xyz文件进行比较。一个目录有原始文件(名称xa02-1-1-1-1、xa02-1-1-1-2等)。我处理所有这些文件(分子),每个文件产生3个新文件,它们的文件名末尾加了-1、-2、-3。(例如,xa02-1-1-1-1将产生xa02-1-1-1、xa02-1-1-1-2和xa02-1-1-1-3)。在这个操作过程中,有些文件只生成两个新文件而不生成第三个文件,或者有些文件只生成一个新文件,有些甚至不生成任何输出。我想比较第一个文件夹与新的,看看哪些文件没有生成3个新文件。基本上我想在第一个文件夹中没有产生3个新文件的文件列表。 我没有找到如何使用Python,所以我使用bash打印了所有的文件名,没有扩展名。现在我有两个文本文件和所有的文件名,我比较这两个文本文件。我正在尝试从新列表中删除最后一个-1、-2、-3,并查看原始文件中的某个项在新列表中出现的次数是否少于3次。代码仍然给我所有文件的计数1。 有谁能指导我如何有效地使用Python。我需要这个为我的博士研究,因为这样做手动只需要几天比较两个文件夹,因为在他们的许多文件(分子)。 下面是我写的代码:
# Define the lists which contain the filenames to compare
originals = "orig-files.txt"
next_step_filenames = "new-files.txt"
def read_input_file(input_filename):
f = open(input_filename, 'r')
fr = f.readlines()
f.close()
return fr
# Read the files with filenames and without extensions
original_files = read_input_file(originals)
next_step_files = read_input_file(next_step_filenames)
original_files_trimmed = [] # Removing the last \n from every line
for a in original_files:
original_files_trimmed.append(a[:-1])
next_step_files_trimmed = [] # A list with the last -1, -2, -3 removed
for i in next_step_files:
next_step_files_trimmed.append(i[:-3])
Final_list = [] # List for Files who generate <3 files
for m in original_files_trimmed:
for n in next_step_files_trimmed:
count = 0
if m in n:
count =+ 1
if count < 3:
Final_list.append(m)
for b in Final_list:
print(b)
这是有名字的文件。 原始-文件.txt
xa02-1-1-1-1
xa02-1-1-1-2
xa02-1-1-2-3
xa02-1-3-3-3
xa06-3-1-2-1
xa07-1-2-1-1
新-文件.txt
xa02-1-1-1-1-1
xa02-1-1-1-1-2
xa02-1-1-1-1-3
xa02-1-1-1-2-1
xa02-1-1-1-2-2
xa02-1-1-1-2-3
xa02-1-1-2-3-1
xa02-1-3-3-3-1
xa02-1-3-3-3-2
xa06-3-1-2-1-1
xa06-3-1-2-1-2
xa06-3-1-2-1-3
您可以在文件中看到,xa02-1-1-2-3和xa02-1-3-3分别生成1和2个文件,而xa07-1-2-1-1没有生成任何输出文件。我希望输出如下所示:
xa02-1-1-2-3 1
xa02-1-3-3-3 2
xa07-1-2-1-1 0
请帮帮我。我非常感谢你的帮助。你知道吗
下面是一个实现:
使用
Counter
计算文件名删去最后2个字符后的出现次数。 结果counter对象可用于过滤original_files_trimmed
,其中项的计数不超过3。你知道吗示例:
相关问题 更多 >
编程相关推荐