求问Python大神,这个脚本怎么提示fname未定义,我是照书敲得啊
#!/usr/bin/envpythonimportosls=os.linesep#getafilenamewhileTrue:ifos.path.exists(fnam...
#! /usr/bin/env python
import os
ls = os.linesep
# get a filename
while True:
if os.path.exists(fname):
print "ERROR:'s%' already exists" % fname
else:
break
# get file content (text) lines
all = []
print "\nEnter lines('.'by itself to quit).\n"
#loop until user terminates input
while True:
entry = raw_input('>')
if entry == '.':
break
else:
all.append(entry)
#write lines to file with proper line_ending
fobj = open(fname,'w')
fobj.writelines(['%s%s' % (x, ls) for x in all ])
fobj.close()
print 'Done' 展开
import os
ls = os.linesep
# get a filename
while True:
if os.path.exists(fname):
print "ERROR:'s%' already exists" % fname
else:
break
# get file content (text) lines
all = []
print "\nEnter lines('.'by itself to quit).\n"
#loop until user terminates input
while True:
entry = raw_input('>')
if entry == '.':
break
else:
all.append(entry)
#write lines to file with proper line_ending
fobj = open(fname,'w')
fobj.writelines(['%s%s' % (x, ls) for x in all ])
fobj.close()
print 'Done' 展开
2个回答
展开全部
Python核心编程中写的是有问题的。一个是没有定义fname,一个是if判断条件应该是在While循环内的,而不是在它的外面。
修正后的代码如下:
[root@master-drbd python]# more makeTextFile.py
#!/usr/bin/env python
import os
ls=os.linesep
#get filename
while True:
fname=raw_input('please enter a filename: ')
if os.path.exists(fname):
print "ERROR: '%s' already exists" % fname
else:
break
#get file content lines
all=[]
print "\nEnter lines ('.' by itself to quit).\n"
#loop until user terminates input
while True:
entry=raw_input('>')
if entry == '.':
break
else:
all.append(entry)
#write lines to file
fobj=open(fname,'w')
fobj.writelines(['%s%s' % (x,ls) for x in all])
fobj.close()
print 'Done!'
展开全部
因为fname这个变量确实是没有定义,在while True语句内,你看看那句之前那里有定义过fname这个变量。。。你再核对一下你书上的内容,或者要求,是不是让你自己获取或者赋值这个变量。。。
追问
我刚刚加了个定义fname的获取,可以运行了(书本貌似有点问题)但是还有个小问题,当我输入一个确实存在的文件名时,"ERROR:'s%' already exists" % fname这句会一直刷,怎么样才能控制次数
追答
这是因为你把fname的获取语句放在了while True的外面,你这个while True是让你输入一个不存在的文件名,如果文件名存在,则说已经存在并要求你再输入一个,如果不存在则程序继续运行。
你放在while True外面,则文件名存在,输出这个警告后循环继续,由于fname的值没有变,所以还是存在。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询