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

Python在从终端运行时不写入文件,但在我的IDE中工作,python,csv,command-line,file-writing,Python,Csv,Command Line,File Writing,我正在Windows 10上使用Anaconda Python 3.6.1 我的程序从Atom提要中获取天气数据,并每隔30分钟(或2秒用于测试)将其写入.csv文件。当我从PyCharm运行程序时,它写入数据没有问题。但是,当我尝试从命令行运行程序时,.csv文件完全没有改变。我在写入后添加了一个print语句,它每2秒向终端打印一次。没问题,它只是不写入数据 我通过命令行这样调用它: python e:\documents\pythonprojects\weatherfeed\weather

我正在Windows 10上使用Anaconda Python 3.6.1

我的程序从Atom提要中获取天气数据,并每隔30分钟(或2秒用于测试)将其写入.csv文件。当我从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()从提要获取当前温度,并将其作为字符串返回

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

你知道问题出在哪里吗

谢谢

编辑:在PyCharm上使用Python3.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

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

Hmmm,我不确定这是否是您的情况,但请检查Pycharm正在运行的python版本以及您的终端正在运行的版本。其中一个可能运行python3.5,另一个运行python2.7,这可能会导致一些问题。但是,我也不确定这是否是您的情况,请使用您正在运行的python版本更新您的问题。

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

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

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() + ',')

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

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

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() + ',')

编辑。谢谢你的回复!编辑。谢谢你的回复!