2017-02-09 7 views
1

Ich benutze Python 2.7 auf Win 7 Pro SP1.Read & write txt Dateifehler - 'str' Objekt hat kein Attribut 'name', polnische dialektische Zeichen in Pfadfehler

Ich versuche Code:

import os 
path = "E:/data/keyword" 
os.chdir(path) 

files = os.listdir(path) 
query = "{keyword} AND NOT(" 
result = open("query.txt", "w") 

for file in files: 
    if file.endswith(".txt"): 
     file_path = file.name 
     dane = open(file_path, "r") 
     query.append(dane) 
     result.append(" OR ") 

result.write(query) 
result.write(")") 
result.close() 

ich Fehler:

file_path = file.name AttributeError: 'str' object has no attribute 'name'

Ich kann nicht verstehen, warum.

Ich habe secon Fehler, wenn Pfad mit polnischen dialektischen Zeichen wie "ąęłńóżć" ist. Ich bekomme Fehler für:

path = "E:/Bieżące projekty/keyword" 

versuche ich fix it to:

path =u"E:/Bieżące projekty/keyword" 

aber nicht helfen. Ich beginne mit Python und ich kann nicht herausfinden, warum dieser Code nicht funktioniert.

Was ich will

  1. alle im Verzeichnis Textdatei finden.
  2. Join alle Textdatei in einer Datei Text namens "query.txt"

fx.

Datei 1 DATA1 DATA2

Datei 2 Daten 3 Daten 4

Ausgabe von "query.txt": DATA1 DATA2 Daten 3 Daten 4

Antwort

0

Above Code arbeitet gut, wenn Pfad variablen ist ohne polnische dialektische Zeichen. Wenn ich Pfad ändern erhalte ich Fehler:

SyntaXError: Non-ASCII character '\xc5' in file query.py on line 9, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details 

Auf Python doc PEP263 ich Magie Zitat finden. Polnische langkodierende Zeichen wie der "ąęłńóźżć" -Standard sind ISO-8859-2. Also versuche ich Kodierung zu Code hinzufügen. Ich versuche auch UTF-8 zu benutzen und bekomme den gleichen Fehler. Mein gesamte Code ist (ohne 5 erste Zeilen mit Kommentar, welcher Code zu tun):

import os 
#path = r"E:/data" 
# -*- coding: iso-8859-2 -*- 
path = r"E:/Bieżące przedsięwzięcia" 
os.chdir(path) 

files = os.listdir(path) 
query = "{keyword} AND NOT(" 

for file in files: 
    if file.endswith(".txt"): 
     dane = open(file, "r") 
     text = dane.read() 
     query += text 
     print(query) 
     dane.close() 
     query.join(" OR ") 
result = open("query.txt", "w") 
result.write(query) 
result.write(")") 
result.close() 

Auf Unicode/UTF-8-Zeichen here Ich fand, dass polnisch char "Z" in UTF-8 als „\ codierte XC5 \ xbc ". Markieren Sie # zur Codierungszeile mit Pfad mit "ż" als Kommentar, um Fehler zu machen. Wenn ich Zeile mit diesem Zeichencode entferne:

funktioniert gut und ich bekomme das Ergebnis, das ich will.

Zum Bearbeiten benutze ich Notepad ++ mit Standardeinstellungen. Ich setze nur in Python-Code-Tab durch vier Leerzeichen ersetzen.

*

zweite Frage

Ich versuche, in Python doc in variablen Weg finden, was r bedeutet. Ich kann es in Python 2.7 String-Dokumentation nicht finden. Könnte mir jemand sagen, wie dieser Teil von Python (wie u, r vor String-Wert) heißt fx.

path = u "some"

path = r "some"?

Ich würde Doc bekommen, darüber zu lesen.

Verwandte Themen