我在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
答案 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,这可能会导致一些问题。但同样,我不确定这是否属于您的情况,请使用您正在运行的蟒蛇版本更新您的问题。