如果CSV文件不存在然后只附加到Python,如何创建它

时间:2015-08-19 06:10:14

标签: python csv append file-writing

您好我想知道如何创建一个文件,如果它在direcotry中不存在。我只想附加数据。

我在Python中收到此错误没有这样的文件或目录。

这是我的代码:

with open (saveAddr+".csv",'a') as allpckts:                            
  writer = csv.DictWriter(allpckts, delimiter=',', fieldnames=header) 
  if pktnum<2:                                                        
      writer.writerow(dict((fn,fn) for fn in header))                 
      writer.writerow(packet_data)                                    
  else:                                                               
      writer.writerow(packet_data)    

更新 我的问题是我不在正确的目录中。因此,对于只搜索最基本语法的人来说,只能附加到CSV文件:

with open (filename".csv",'a') as filedata:                            
      writer = csv.DictWriter(filedata, delimiter=',', fieldnames=header)
      writer.writerow(data) 

3 个答案:

答案 0 :(得分:5)

您很可能正在尝试在不存在的目录中创建文件。

你想要的是'a'模式,它创建文件(如果它不存在),否则它附加到文件。但它不会创建目录,如果这些目录不存在,你应该在运行程序之前创建saveAddr中使用的目录。

如果您需要程序化解决方案,可以查看os.mkdir,它应该创建目录。

答案 1 :(得分:3)

with open (saveAddr+".csv",'a') as allpckts:
如果不存在,

将创建一个新文件saveAddr+".csv",否则打开它以进一步追加。假设saveAddr是文件名(如果路径包含在其中,请检查路径是否存在。)

如果要检查文件是否存在

os.path.isfile('/path/to/csv')

答案 2 :(得分:1)

#check if dir exist if not create it
def check_dir(file_name):
    directory = os.path.dirname(file_name)
    if not os.path.exists(directory):
        os.makedirs(directory)


def save(file_name, records):
    check_dir(file_name)
    csv_file = open(file_name,'w+')
    csvWriter = csv.writer(csv_file,delimiter=',')
    count = 0
    for record in records:
        csvWriter.writerow([record])
        count+=1

    print(count, " record saved to ",file_name)
    return  count    enter code here

directory = os.path.abspath(os.path.join(os.path.curdir))
save(directory+"/data/filename.csv",your_list)