2016-03-28 10 views
0

Bilgisayarımın dosyalarında seçebileceğim farklı bir .txt dosyasında belirli bir dize bulmak istiyorum..txt dosyasında bir dize bul

string = "example" 
fichier = open(file_path, "r") 
for line in fichier: 
    if string in line: 
     print string 
fichier.close() 

Ama başıma bütün dosyanın yolunu yazma olmadan dosyayı seçmek için bu kod satırları ekleyin zaman başıma yolunu yazdı zorunda ve: Bu kod gerçekten çalışıyor

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() 
os.path.realpath() bir yol verir, çünkü doğru,

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 

sorun ne göremiyorum: İşte

traceback nedir? Sanırım sorunum askopenfile()'dan geliyor, ne tür bir veri döndüğünü bulamıyorum. Bana yardım edersen memnun olurum lütfen.

cevap

1

askopenfile() bir dosyaya dönmez name; nesnesi nesnesini döndürür. Yani, açılışını kendin yapmana gerek yok. Sadece yapabilirsiniz: Zaten bir değişken adı olarak file kullanarak olmamalıdır

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() 

, Python2 o yerleşik türünü gölgeler çünkü.