20

我正在尝试编写一个简单的程序来读取文件并搜索单词,然后打印在文件中找到该单词的次数。每次我输入“test.rtf”(这是我的文档的名称)时,我都会收到以下错误:

Traceback (most recent call last):
  File "/Users/AshleyStallings/Documents/School Work/Computer Programming/Side Projects/How many? (Python).py", line 9, in <module>
    fileScan= open(fileName, 'r')  #Opens file
FileNotFoundError: [Errno 2] No such file or directory: 'test.rtf'

上学期上课,我记得我的教授说你必须把文件保存在一个特定的地方?我不确定他是否真的这么说,但如果有帮助,我正在运行苹果 OSx。

这是我的代码的重要部分:

fileName= input("Please enter the name of the file you'd like to use.")
fileScan= open(fileName, 'r')  #Opens file
4

8 回答 8

14

如果用户没有传递文件的完整路径(在 Unix 类型系统上,这意味着以斜杠开头的路径),则相对于当前工作目录解释路径。当前工作目录通常是您启动程序的目录。在您的情况下,该文件test.rtf必须位于您执行程序的同一目录中。

您显然是在 Mac OS 下使用 Python 执行编程任务。在那里,我建议在终端中工作(在命令行上),即启动终端,cd进入输入文件所在的目录,然后使用命令在那里启动 Python 脚本

$ python script.py

为了完成这项工作,包含 python 可执行文件的目录必须位于 PATH 中,这是一个所谓的环境变量,其中包含在您输入命令时自动用于搜索可执行文件的目录。你应该利用它,因为它大大简化了日常工作。这样,您可以简单地cd到包含您的 Python 脚本文件的目录并运行它。

在任何情况下,如果您的 Python 脚本文件和数据输入文件不在同一个目录中,您必须始终指定它们之间的相对路径,或者必须为其中之一指定绝对路径。

于 2013-07-15T16:17:03.670 回答
4

一个好的开始是验证输入。换句话说,您可以确保用户确实为真实的现有文件键入了正确的路径,如下所示:

import os
fileName = input("Please enter the name of the file you'd like to use.")
while not os.path.isfile(fileName):
    fileName = input("Whoops! No such file! Please enter the name of the file you'd like to use.")

这得益于内置模块os的一点帮助,它是标准 Python 库的一部分。

于 2013-07-15T16:27:15.480 回答
3

是否test.rtf位于您运行此程序时所在的同一目录中?

如果没有,您需要提供该文件的完整路径。

假设它位于

/Users/AshleyStallings/Documents/School Work/Computer Programming/Side Projects/data

在这种情况下,您将输入

data/test.rtf

作为你的文件名

或者它可能在

/Users/AshleyStallings/Documents/School Work/Computer Programming/some_other_folder

在这种情况下,您将输入

../some_other_folder/test.rtf

于 2013-07-15T16:18:03.613 回答
1

如上所述,问题在于指定文件的路径。OS X 中的默认路径是您的主目录(/Users/macbook 在终端中由 ~ 表示...您可以使用系统偏好设置 > 用户和组中的高级选项更改或重命名主目录)。

或者您可以在文件名中指定从驱动器到文件的路径:

path = "/Users/macbook/Documents/MyPython/"
myFile = path + fileName

您还可以捕获 File Not Found 错误并使用 try 给出另一个响应:

try:
    with open(filename) as f:
        sequences = pick_lines(f)
except FileNotFoundError:
    print("File not found. Check the path variable and filename")
    exit()
于 2018-09-28T11:12:01.320 回答
1

您可能需要通过以下方式更改路径:

import os
path=os.chdir(str('Here_should_be_the_path_to_your_file')) #This command changes directory

这至少对我有用!希望它也适合你!

于 2021-02-19T07:55:39.810 回答
0

很难在评论中给出代码示例。

要读取文件中的单词,您可以读取文件的内容,这会为您获取一个字符串 - 这是您之前使用 read() 方法所做的 - 然后使用 split() 获取单个单词。Split 在提供的分隔符上或默认情况下在空格上分解字符串。例如,

"the quick brown fox".split()

生产

['the', 'quick', 'brown', 'fox']

相似地,

fileScan.read().split()

会给你一个字符串数组。希望有帮助!

于 2013-07-15T16:52:45.160 回答
0

我犯的错误是我的代码:

x = 打开('python.txt')

打印(x)

但问题出在文件目录中,我将其保存为 python.txt 而不仅仅是 python 。

所以我的文件路径是 ->C:\Users\noob\Desktop\Python\Course 2\python.txt.txt

这就是它给出错误的原因。

将您的文件命名为不带 .txt 的文件,它将运行。

于 2020-08-14T16:37:16.273 回答
0

首先检查您的文件格式是什么(例如:.txt、.json、.csv 等),

如果您的文件存在于 PWD 中,则只需在单('')或双(“”)引号内提供文件名以及文件格式,并根据您的要求提供适当的操作模式

例如:

with open('test.txt','r') as f: data=f.readlines() for i in data: print(i) 如果您的文件存在于其他目录中,则只需给出您的文件所在的完整路径名和文件名以及单('')或双(“”)引号内文件的文件格式和适当的操作模式作为你的要求。

如果它显示 unicode 错误,只需将 r 放在文件路径的引号之前,或者放在 '/' 而不是 ''

with open(r'C:\Users\soman\Desktop\test.txt','r') as f: data=f.readlines() for i in data: print(i)

于 2021-11-03T07:08:38.150 回答