
python 用raw_input()获取文件名错误
我用python的raw_input()实现从用户哪来获取到文件名,然后再用open的方式打开获取到的文件。但现在是当用户输入的文件名含有空格的时候,就会出现IO错误。网...
我用python的raw_input()实现从用户哪来获取到文件名,然后再用open的方式打开获取到的文件。但现在是当用户输入的文件名含有空格的时候,就会出现IO错误。网上说是没有在路径前加r,所以空格python无法正常解释。那有什么办法可以解决吗?还是只能通过异常来判断,不准用户输入带空格的文件名?
展开
展开全部
晕死,这位大侠大侠你把我打败了。我告诉你怎么用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,都非常不错。你可以试试!
我说的够系统吧,快把分给我吧!:)
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,都非常不错。你可以试试!
我说的够系统吧,快把分给我吧!:)
追问
和我问的有关系吗?
展开全部
完全不会有问题啊?可能是我没理解到吧。举个例子
假设我们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() 了
假设我们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”。对应的,想要输入字符串的话,也就要自己加上对应的引号,表示所输入的是字符串类型的值了。
在Python中的raw_input:只保留原始的输入,不作其他(特殊)处理,所以所得到的输入,都是字符串;
input:会去做额外的处理,比如 1 + 2,其会帮你去计算为3,而不是字符串本身的“1 + 2”。对应的,想要输入字符串的话,也就要自己加上对应的引号,表示所输入的是字符串类型的值了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |