Python 当文件位于工作目录中时,FileNotFoundError

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

我正在使用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: [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前缀仅在提供字符串文字时有效,例如
    r“123”
    将有效。执行
    “r”+string
    只需将字符r添加到字符串的开头。更多关于为什么
    r
    使以后打开文件更有效的信息。您不需要在字符串周围添加引号,因为这将使路径无效。在终端中只能看到字符串周围的引号,因为Python希望向您指示字符串是字符串

  • 显示的是
    \
    ,而不是
    \
    ,因为
    \
    是一个特殊的控制字符,用于转义序列,例如
    \n
    \t
    ,以仅获取反斜杠字符
    \
    。这也是使用
    r
    标志打开文件的原因,该标志按原样处理字符串


  • 请按如下方式编辑您的问题:制作一个有用的标题,总结您的问题,并使用“代码格式”按钮
    {}
    ,使代码可读。@JonathonReinhart尽力帮助OP:)只需将
    cd
    放入调用python程序的目录中,然后使用
    ls
    确保
    names.txt
    位于该目录中。如果没有,请将其移动到目录中。