我有这样一个场景:
a = ["file1","file2","file3","file1","file2","file1","file5"]
set_flag = 0
for i in range (len(a)):
file_name = '%s.txt' %(a[i])
file_write = open('%s'%(file_name),'w')
上面的工作和写入文件。 但是,我想包含一个逻辑,即使某些文件名在上面的列表中出现不止一次,file_write 也应该只发生一次。不应该有多个文件写入。例如。如果 file1 出现 4 次,则只应写入一次。 有了这个,set_flag 应该设置为“1”,这样如果我尝试在我的代码中的任何地方写入 file1,它应该绕过文件写入。任何想法如何完成这个并设置这样的标志..?
最佳答案
使用 set()
,它只存储一个项目的单个副本:
>>> a=["file1","file2","file3","file1","file2","file1","file5"]
>>> set(a)
set(['file3', 'file2', 'file1', 'file5'])
对于您的代码,这也将保持顺序。:
a=["file1","file2","file3","file1","file2","file1","file5"]
seen=set()
for file in a: #you can iterate over a list itself
if file not in seen: #if file is not in the set then write
file_name= '%s.txt' %(file)
file_write= open('%s'%(file_name),'w')
seen.add(file) #add file to seen
关于python - 只写一次文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16357131/