我是一个新的python用户,编写了一个python脚本,提示程序打开并读取文本文件(.txt)的名称。在name = raw_input("Enter file:")
if len(name) < 1:
name = "test.txt"
handle = open(name)
这对我来说运行得很好,但后来我安装了Anaconda并尝试运行相同的.py脚本,并一直收到以下错误消息:
^{pr2}$
即使我没有在脚本或文本文件中做任何更改,文本文件肯定存在于目录中。因此,我卸载了Anaconda并删除了Anaconda目录以及~/.bash_profile文件中指向Anaconda的PATH变量,看看这是否能解决问题。但我还是犯了同样的错误:(怎么了?如果我直接从textwargler在终端中运行文件,并且我的.py脚本包含shebang行#!/usr/bin/env python,则不会出现任何错误
我的信息:$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.11.6
BuildVersion: 15G1004
$ python
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 26 2016, 12:10:39)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
$ which python
/Library/Frameworks/Python.framework/Versions/2.7/bin/python
$ /usr/bin/python -V
Python 2.7.10
非常感谢您的时间和帮助!在
编辑:
我复制了test123.py文档和test.txt文件,并将它们放在目录/Users/myusername/Documents中,然后再次运行脚本,这次在“Enter file”提示符下输入/Users/myusername/Documents/test.txt(不带引号),效果很好!所以现在我需要修改我的问题:
我的理解是,当python脚本运行时,工作目录会自动更改为.py文件所在的目录。这不对吗?或者我怎么能把我的设置改回原来的样子,因为以前好像是这样,现在不是了
编辑2:
现在我已经意识到我最初的错误源是Python使用的工作目录的结果,我已经能够通过在我的test123.py脚本中添加以下行来解决我的问题:import os
abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname)
但是,我也选择了@somethingshomething提供的答案,因为既然我已经能够更改工作目录,输入'test.txt'(带引号)无效,但是test.txt(不带引号)可以正常工作。在
(我唯一还想知道的是,为什么以前,当我运行python脚本时,工作目录自动更改为.py文件所在的目录,然后设置发生了变化,与我安装的Anaconda相对应。不过,既然我已经解决了我的问题,这似乎并不重要。)
谢谢大家的帮助!在