Python从终端运行时不写入文件,但可以在我的IDE中运行

时间:2018-01-10 01:26:02

标签: python csv command-line file-writing

我在Windows 10上使用Anaconda Python 3.6.1。

我的程序从Atom提要中获取天气数据,并每隔30分钟将其写入.csv文件(或用于测试目的的2秒)。当我从PyCharm运行程序时,它写入数据没问题。但是,当我尝试从命令行运行程序时,.csv文件完全不变。我在写完后添加了一个print语句,每2秒打印到终端没问题,它只是不写数据。

我通过这种方式通过命令行调用它:

python e:\documents\pythonprojects\weatherfeed\weatherfeed.py

我写的数据函数如下:

def write_current_temp():
""" Writes current temperature to weather_data.csv on same line """
with open('weather_data.csv', 'a') as wd:
    wd.write(get_current_temp() + ',')

def new_day():
""" Creates a new line, adds yy.mm.dd to line, adds current temp """
with open("weather_data.csv", 'a') as wd:
    wd.write("\n")
    wd.write(time.strftime("%y.%m.%d,"))
    wd.write(get_current_temp() + ',')

其中get_current_temp()从Feed中获取当前温度并将其作为字符串返回

weather_data.csv与我的.py文件位于同一个文件夹中,当我从PyCharm运行时,它可以100%完美地工作

任何想法可能是什么问题?

谢谢!

编辑:在PyCharm上使用Python 3.6.1,我很确定这是我在这台机器上安装的唯一版本。命令行似乎正在运行3.6.1:我没有在我的路径上安装它,所以我从e:\ applications \ anaconda运行并在命令行上检查那个版本产生这个:

e:\Applications\Anaconda>python
Python 3.6.1 |Anaconda 4.4.0 (64-bit)| (default, May 11 2017, 13:25:24) [MSC v.1900 64 bit (AMD64)] on win32

2 个答案:

答案 0 :(得分:3)

您正在指定文件的相对位置,该位置将相对于运行脚本的目录,而不是脚本所在的目录。

您可以尝试这样的操作来强制它查看与脚本相同的目录:

import os 
this_dir = os.path.dirname(os.path.realpath(__file__))
file_path = os.path.join(this_dir, 'weather_data.csv')
with open(file_path, 'a') as wd:
    wd.write(get_current_temp() + ',')

答案 1 :(得分:0)

嗯,我不确定这是不是你的情况,但请检查Pycharm运行的python版本以及终端运行的版本。其中一个可以运行python3.5而另一个运行2.7,这可能会导致一些问题。但同样,我不确定这是否属于您的情况,请使用您正在运行的蟒蛇版本更新您的问题。