python - 只写一次文件

标签 python

我有这样一个场景:

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/

相关文章:

python - macOS 卡塔利娜 : Python Quit unexpectedly error

python - 从 Python GPy 中的高斯过程模型获取置信限

python - 如何使用 eval dataframe 方法在自定义函数中返回 numpy 数组或列表?

Python 请求模块不再工作

python - 用于训练/验证/测试集拆分的 SHA 哈希

python - 如何在Python 2.7.1中将一串字母变成3个字母的单词

python - 字典:获取键列表的值列表

python - 如何使用 python opencv 测量同一图像中两条线之间的角度?

python - 如何为我的数据创建三个新列?

python - Scrapy 合并来自多个进程的项目