python 用raw_input()获取文件名错误

我用python的raw_input()实现从用户哪来获取到文件名,然后再用open的方式打开获取到的文件。但现在是当用户输入的文件名含有空格的时候,就会出现IO错误。网... 我用python的raw_input()实现从用户哪来获取到文件名,然后再用open的方式打开获取到的文件。但现在是当用户输入的文件名含有空格的时候,就会出现IO错误。网上说是没有在路径前加r,所以空格python无法正常解释。那有什么办法可以解决吗?还是只能通过异常来判断,不准用户输入带空格的文件名? 展开
 我来答
仇献祎qk
2011-08-23 · TA获得超过498个赞
知道小有建树答主
回答量:904
采纳率:100%
帮助的人:537万
展开全部
晕死,这位大侠大侠你把我打败了。我告诉你怎么用IDLE吧:
1、点开IDLE,在“python shell”窗口的左上角点“File”中点开一个“New Window”,
2、再在新打开的“New Window”窗口的编辑区内编写代码。
3、编写完后再在新打开的“New Window”窗口左上角点击“save”,再保存到你要保存的位置(例:保存在c盘下)。文件名由你自己定(例:helloworld.py),这样文件就路径就是c:\helloworld.py 。这时你可以按”F5“键运行
4、再在windows 的开始中运行cmd,再在cmd窗口中输入pyhon c:\helloworld.py (也可以先输入cd ../.. 回车后再输入pyhon helloworld.py)。
5、要修改时点开IDLE,在“python shell”窗口的左上角点“File”中点开一个“open ..“,找到
c:\helloworld.py 打开编辑窗口(以窗口名称helloworld.py c:\ helloworld.py),修改里面的类容就OK。
这样你的第一、二、三问题就不会出现。
第四个问题就是在第2或者第5步打开的编辑窗口后。关闭“python shell”窗口,再点击你的编辑窗口“Run”中的“python shell”,就出现一个干净的python shell界面。
第五个问题,你找一个有道词典,一个个翻译吧。

python的开发环境很多,我用的有eclipse、wing ide、还有别人推荐的pycharm,都非常不错。你可以试试!
我说的够系统吧,快把分给我吧!:)
追问
和我问的有关系吗?
mao_youjia
推荐于2018-03-14 · TA获得超过2274个赞
知道小有建树答主
回答量:523
采纳率:50%
帮助的人:495万
展开全部
完全不会有问题啊?可能是我没理解到吧。举个例子

假设我们d盘有个文件叫做 a a.txt ,中间有个空格
然后我们用 file_name = raw_input() 输入了文件名 a a
现在file_name == "a a"
然后打开文件:
my_file= open( “d:/" + a + ".txt" , "r”)
my_text = my_file.read()
就完整读出了a a.txt中的内容,没有任何问题啊? 理论上,空格什么的很正常根本不是问题。
我猜测,可能是编码上什么的问题。
1、尝试不要用中文
2、看看是不是由于非字符串的原因。尝试将名字转化为字符串试试。
3、看看是不是上次操作这个文件的时候忘记 .close() 了
追问
>>> f=open(raw_input('1  2.txt'))
1 2.txt
Traceback (most recent call last):
File "", line 1, in
IOError: [Errno 22] invalid mode ('r') or filename: ''
>>>
追答
晕死!你理解错 raw_input 的意思了!
raw_input 是键盘输入字符串没错,后面的变量表示提示字符。
也就是说:

f=open(raw_input('请输入1 2.txt:'))
请输入1 2.txt:

看出来没?系统只是吧提示字符串显示出了,你其实什么还没输入就按回车了,对于系统来说接收到的变量是空,自然出错了。正确的方法是:

>>> f=open(raw_input('1 2.txt'))
1 2.txt1 2.txt

前面的1 2.txt是提示,后面的是我自己输入的。
我推荐你这样写:

f=open(raw_input('please input you file name : \r\n'))

后面\r\n表示换行,这样就清楚多了。
如果你想要系统自动帮你输入进去,那应该是用方法。

def openfile(filename="1 2.txt")
f = open(filename,"r")

这样的话,你打开文件就用 openfile("c:/3 4.txt") ,如果你输入 openfile() ,系统就默认打开 "1 2.txt"

另外,还有个办法,就是
if __name__ == '__main__':
_test()
意思是,如果这个文件(模块)载入时不指定任何方法,就默认执行test()方法。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2016-02-06
展开全部
  使用input字符串没加引号,就会出现这种NameError的错误;
  在Python中的raw_input:只保留原始的输入,不作其他(特殊)处理,所以所得到的输入,都是字符串;
  input:会去做额外的处理,比如 1 + 2,其会帮你去计算为3,而不是字符串本身的“1 + 2”。对应的,想要输入字符串的话,也就要自己加上对应的引号,表示所输入的是字符串类型的值了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式