我正在尝试学习如何在Python中解析.txt文件。这导致我打开翻译(终端> python)并玩游戏。但是,我似乎无法指定正确的路径。 Python首先在哪里看?
这是我的第一步:
f = open("/Desktop/temp/myfile.txt","file1")
这显然不起作用。有人可以建议吗?
答案 0 :(得分:9)
这不起作用,因为open
的语法错误。
在翻译提示下试试这个:
>>> help(open)
Help on built-in function open in module __builtin__:
open(...)
open(name[, mode[, buffering]]) -> file object
Open a file using the file() type, returns a file object.
所以第二个参数是开放模式。 A quick check of the documentation我们会尝试这样做:
f = open("/Desktop/temp/myfile.txt","r")
答案 1 :(得分:8)
编辑:哦,是的,你的第二个论点是错误的。甚至没有注意到:)
Python查找您在文件打开时告诉它的位置。如果你打开/ home / malcmcmul中的解释器那么那将是活动目录。
如果指定路径,那就是它的外观。你确定/ Desktop / temp是一个有效的路径吗?我不知道很多设置,其中/ Desktop是这样的根文件夹。
一些例子:
如果我有一个文件:/home/bartek/file1.txt
我输入python
将我的口译员放在目录/home/bartek/
这将有效并获取file1.txt ok:f = open("file1.txt", "r")
这不起作用:f = open("some_other_file.txt", "r")
因为该文件位于某种目录中。
只要我指定正确的路径,这将有效:f = open("/home/media/a_real_file.txt", "r")
答案 2 :(得分:2)
首先,第二个参数是权限位:“r”表示读取,“w”表示写入,“a”表示追加。 “file1”不应该在那里。
答案 3 :(得分:2)
尝试:
f = open('Desktop/temp/myfile.txt', 'r')
这将打开相对于当前目录的文件。如果要使用绝对路径打开文件,可以使用'/Desktop/temp/myfile.txt'
。打开函数的第二个参数是模式(不知道你的例子中file1
应该是什么意思)。
关于这个问题 - Python遵循OS方案 - 在当前目录中查找,如果寻找模块,则在sys.path
之后查找。如果你想从某个子目录打开文件,请使用os.path.join,如:
import os
f = open(os.path.join('Desktop', 'temp', 'myfile.txt'), 'r')
然后你可以安全地摆脱'/'和'\'。
请参阅built-in open function的文档,了解有关使用开放函数的方法的更多信息。
答案 4 :(得分:0)
原始帖子没有这个小问题,但还要确保文件名参数使用'/'而不是'\'。文件检查器在其位置中使用了不正确的'/',这使我感到震惊。
'C:\ Users \ 20 \ Documents \ Projects \ Python \ test.csv'=不起作用
'C:/Users/20/Documents/Projects/Python/test.csv'=效果很好
答案 5 :(得分:0)
只需输入您的文件名并有您的数据.....它做什么?---->如果路径存在,则检查它是否为文件,然后打开并读取
import os
fn=input("enter a filename: ")
if os.path.exists(fn):
if os.path.isfile(fn):
with open(fn,"r") as x:
data=x.read()
print(data)
else:
print(fn,"is not a file: ")
else:
print(fn,"file doesnt exist ")
答案 6 :(得分:0)
from pathlib import Path
import os
desired_directory = Path('C:/')
desired_directory = desired_directory / 'subfolder'
os.chdir(desired_directory)
这将迫使Python在您指定的路径中查看目录。如以下代码片段所示,当使用`subprocess.Popen'来使用二进制文件时,它工作得很好:
from subprocess import Popen
from shutil import which
instance_of_Popen = Popen(which('name_of_executable'))
print(instance_of_Popen.args)
答案 7 :(得分:-1)
此:
import os
os.path
应该告诉你python首先出现在哪里。当然,如果你指定绝对路径(就像你有的那样),那么这应该不重要。
另外,正如其他人所说的那样,你的第二个论点是错误的。要找到正确的方法,请尝试以下代码:
help(open)