Python 当文件位于工作目录中时,FileNotFoundError
我正在使用Python 3.4 这是我的代码:Python 当文件位于工作目录中时,FileNotFoundError,python,file,Python,File,我正在使用Python 3.4 这是我的代码: fileObject = open("names.txt", "r") counter = 0 for line in fileObject: fileObject.readline() counter = counter + 1 print("The number of lines is: ", counter) 运行此操作时,无论将文件放在何处,我都会反复收到以下回溯错误: FileNotFoundError: [Err
fileObject = open("names.txt", "r")
counter = 0
for line in fileObject:
fileObject.readline()
counter = counter + 1
print("The number of lines is: ", counter)
运行此操作时,无论将文件放在何处,我都会反复收到以下回溯错误:
FileNotFoundError: [Errno 2] No such file or directory: 'names.txt'
OSError: [Errno 22] Invalid argument: 'r"C:\\Python34\\names.txt"'
在我的书中(我目前正在学习Python类)找到的唯一可能与此相关的信息如下:
fileObject = open(r"C:\Python34\names.txt", "r")
counter = 0
for line in fileObject:
fileObject.readline()
counter = counter + 1
print("The number of lines is: ", counter)
若open函数接收到不包含路径的文件名,则假定该文件和程序位于同一目录中
但不管我把文件放在哪里,这都不行。虽然,当我“在路径文字前面加字母r”时,例如:
fileObject = open(r"C:\Python34\names.txt", "r")
counter = 0
for line in fileObject:
fileObject.readline()
counter = counter + 1
print("The number of lines is: ", counter)
然后,它将工作,但不显示包含数字的行。(如何使其包含这些?)
最后,我还必须修改代码,允许用户输入他们想要读取的文件,但只读取文件的前5行,如果小于,则显示所有行。如下所示(我无法简单地键入名称(“names.txt”)来搜索文件):
它给出了以下回溯错误:
FileNotFoundError: [Errno 2] No such file or directory: 'names.txt'
OSError: [Errno 22] Invalid argument: 'r"C:\\Python34\\names.txt"'
为什么我会收到这个?(我还注意到,它在每个已经存在的错误消息旁边添加了一个额外的“\”——错误消息包含4个“\”,而我只键入了2个。)
总之:
(1.“names.txt”的“FileNotFoundError”。
(2.)如何使“readline()”
方法识别数字(int/float)。
(3.“无效参数”
用户输入要搜索的文件时的回溯。
(4.)为什么最后一个问题[错误消息]显示的字符数是我实际输入的字符数的两倍
open
,并且提供了一个相对路径(如“cat.txt”
)时,Python从当前工作目录中读取,该目录是您在终端中启动解释器的地方。确保您在正确的路径上int()
或float()
,float()
更安全,因为int(“1.1”)
将抛出错误r“123”
将有效。执行“r”+string
只需将字符r添加到字符串的开头。更多关于为什么r
使以后打开文件更有效的信息。您不需要在字符串周围添加引号,因为这将使路径无效。在终端中只能看到字符串周围的引号,因为Python希望向您指示字符串是字符串\
,而不是\
,因为\
是一个特殊的控制字符,用于转义序列,例如\n
和\t
,以仅获取反斜杠字符\
。这也是使用r
标志打开文件的原因,该标志按原样处理字符串请按如下方式编辑您的问题:制作一个有用的标题,总结您的问题,并使用“代码格式”按钮
{}
,使代码可读。@JonathonReinhart尽力帮助OP:)只需将cd
放入调用python程序的目录中,然后使用ls
确保names.txt
位于该目录中。如果没有,请将其移动到目录中。