python写入文件不写

问题描述:

我发现了类似的问题,并尝试了内部提出的解决方案,似乎没有解决我的问题。我试图做的是实质上将数据从一个文件复制到另一个文件,即使它没有错误我们已经验证了'line'变量是一个字符串并且包含正确的数据,但它不会写入文件。我目前使用python 2.7。python写入文件不写

我试图添加.flush(),因为一些其他解决方案建议没有成功。我已经证实,如果我在第一个for循环之前写入一个静态字符串,它实际上会写入该文件。我的怀疑是这两个文件打开并迭代其中之一有关,但我不确定这是否有效。

with open("data/data.csv", 'w+') as data_file, open("data/raw/" + data_point + ".csv", 'r') as raw_file: 
    for line in raw_file: 
     line = line.split(',') 
     temp_date = datetime(int(line[0]), int(line[1]), int(line[2])) 
     if newest_date == datetime(1,1,1): 
      newest_date = temp_date 
     if temp_date < oldest_date: 
      oldest_date = temp_date 
     sorted_raw = [[float(line[4]), float(line[5])]] + sorted_raw 

    raw_file.seek(0) # reset read pointer 
    for line in raw_file: 
     data_file.write(line) 

编辑:我现在意识到我的白痴。我有第二个未完成的功能,基本上是这个修改后的副本粘贴,但没有写入。每次打开文件的“w +”方法都会清除它,因为在完成这段代码之后总是会调用第二个函数,所以我永远无法捕获写入的文件。我很抱歉的噪音

+0

您的'data'子目录是否与您的脚本存在于相同的目录中? – Soviut

+0

是的,我想我也应该注意到这是目前在Windows 10下运行的 – beeedy

+0

在这种情况下(在那里真的不存在问题,因为问题完全不同)的礼貌的事情是删除你的问题 - 尽管在这种情况下,您需要@ Soviut的合作才能这样做,因为低代表用户无法在任何有回答的答案出现时自行删除。 –

你可以写在第一个循环的数据文件。

with open("data/data.csv", 'w+') as data_file, open("data/raw/" + data_point + ".csv", 'r') as raw_file: 
    for line in raw_file: 
     line = line.split(',') 
     temp_date = datetime(int(line[0]), int(line[1]), int(line[2])) 
     if newest_date == datetime(1,1,1): 
      newest_date = temp_date 
     if temp_date < oldest_date: 
      oldest_date = temp_date 
     sorted_raw = [[float(line[4]), float(line[5])]] + sorted_raw 

     data_file.write(line) 
+0

复制意大利面错误,严重道歉并且已得到解决! (这实际上并不在代码中) – beeedy

+0

@beeedy我已经更新了我的答案。 – Soviut

+0

编辑原始帖子,是我完成的一个错误,在脚本中留下未完成的代码来运行。 – beeedy