我是一个新的python用户并编写了一个python脚本,提示程序打开并读取文本文件(.txt)的名称。
name = raw_input("Enter file:")
if len(name) < 1:
name = "test.txt"
handle = open(name)
这对我来说非常合适,但之后我安装了Anaconda并尝试运行相同的.py
脚本并不断收到此错误消息:
$ python /test123.py
Enter file:'test.txt'
Traceback (most recent call last):
File "/test123.py", line 26, in <module>
handle = open(name)
IOError: [Errno 2] No such file or directory: "'test.txt'"
即使我在脚本或文本文件中没有更改任何内容,文件文件肯定存在于目录中。然后我卸载了Anaconda并删除了Anaconda目录以及指向~/.bash_profile
文件中的Anaconda的PATH变量,看看是否能解决问题。但我仍然得到同样的错误:(有什么问题?如果我直接从TextWrangler在终端中运行文件,我不会收到任何错误,而我的.py
脚本包含shebang行#!/usr/bin/env python
< / p>
我的信息:
$ 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
中并再次运行脚本,这次在&上输入/Users/myusername/Documents/test.txt
(不带引号) #34;输入文件&#34;提示,它工作正常!所以现在我需要修改我的问题:
我的理解 - 以及之前一直对我有用的 - 是当运行python脚本时,工作目录会自动更改为.py
文件所在的目录。这不正确吗?或者我怎么能改变我的设置,因为以前似乎已经出现过这种情况,但现在还没有。
编辑2:
既然我已经意识到原始错误的来源是Python使用的工作目录的结果,我已经能够通过在我的test123.py
脚本中添加以下行来解决我的问题:
import os
abspath = os.path.abspath(__file__)
dname = os.path.dirname(abspath)
os.chdir(dname)
如此处所示:python: Change the scripts working directory to the script's own directory
但是,我也选择@SomethingSomething提供的答案,因为既然我已经能够更改工作目录,输入'test.txt'
(带引号)无效,但是test.txt
(不带引号)按需运行。
(我唯一想知道的是为什么之前,当我运行python脚本时,工作目录自动更改为.py
文件所在的目录,然后以某种方式设置改变了,与我安装的Anaconda相对应。但是,既然我已经解决了我的问题,这似乎并不重要。)
感谢大家的帮助!
答案 0 :(得分:3)
这很简单,输入错误:
不正确:
$ python /test123.py
Enter file:'test.txt'
正确:
$ python /test123.py
Enter file:test.txt
不包含'
个字符。它不是代码,它只是标准输入