我想在不同的.txt文件中找到一个特定的字符串,我可以在我的计算机文件中选择。这段代码实际上有效:
string = "example"
fichier = open(file_path, "r")
for line in fichier:
if string in line:
print string
fichier.close()
但是我必须自己编写路径,当我添加这些代码行以便选择文件而不自己写入整个文件的路径时:
from Tkinter import Tk
from tkFileDialog import askopenfile
import os
Tk().withdraw()
file = askopenfile()
file_path = os.path.realpath(file)
string = "example"
fichier = open(file_path, "r")
for line in fichier:
if string in line:
print string
fichier.close()
这是追溯:
Traceback (most recent call last):
File "C:\Users\WinPython-64bit-2.7.10.3\python-2.7.10.amd64\Lib\sip-4.18.dev1603251537\fichier txt.py", line 13, in <module>
file_path = os.path.realpath(file)
File "C:\Users\WinPython-64bit-2.7.10.3\python-2.7.10.amd64\lib\ntpath.py", line 488, in abspath
path = _getfullpathname(path)
TypeError: coercing to Unicode: need string or buffer, file found
我看不出有什么问题,因为os.path.realpath()
给出了一条路径,对吧?我想我的问题来自askopenfile()
,我无法找到它返回的数据类型。
如果你能帮助我,我将不胜感激。
答案 0 :(得分:1)
askopenfile()
不会返回文件名称;它返回一个文件 object 。这意味着您不需要自己打开。你可以这样做:
from Tkinter import Tk
from tkFileDialog import askopenfile
import os
Tk().withdraw()
fichier = askopenfile()
string = "example"
for line in fichier:
if string in line:
print string
fichier.close()
你不应该使用file
作为变量名,因为在Python2中它会影响内置类型。