2017-02-09 22 views
1

Я использую Python 2.7 на Win 7 Pro SP1.Ошибка чтения и записи файла txt - объект 'str' не имеет атрибута 'name', польский диалектический символ в ошибке пути

Стараюсь код:

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

я получаю сообщение об ошибке:

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

Я не могу понять, почему.

У меня есть ошибка secon, когда путь с полированными диалектическими символами «ąęłńóżć». Я получаю сообщение об ошибке для:

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

Я пытаюсь исправить его:

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

, но это не помогло. Я начинаю с Python, и я не могу понять, почему этот код не работает.

Что я хочу

  1. Найти текстовый файл в каталоге.
  2. Регистрация весь текстовый файл в один текстовый файл с именем "query.txt"

FX.

файл 1 data1 data2

файл 2 данные 3 данные 4

Выход из "query.txt": данные data2 data1 3 Данные 4

ответ

0

Приведенный выше код работает отлично, если переменная путь не имеет польских диалектических символов. Когда я меняю путь, я получаю ошибку:

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 

На python doc PEP263 Я нахожу магическую цитату. Польскими языковыми кодировками, такими как стандарт «ąęłńóźżć», является ISO-8859-2. Поэтому я пытаюсь добавить кодировку в код. Я также пытаюсь использовать UTF-8, и я получаю ту же ошибку. Мой весь код (без 5 первых строк с комментариями, что код делает):

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

В Unicode/UTF-8 символ here Я обнаружил, что польский символ «Z» кодируется в UTF-8, как «\ xc5 \ XBC». Отметьте # до строки кодирования с указанием пути с помощью «ż», так как комментарий также вызывает ошибку. Когда я удаляю строку с этим кодом:

path = r"E:/Bieżące przedsięwzięcia" 

работаю нормально и получаю результат, который я хочу.

Для редактирования я использую Notepad ++ с настройками по умолчанию. Я только установил на вкладке кодов питона вместо четырех пробелов.

*

Второй вопрос

Я пытаюсь найти в Python документ в переменной пути, что г это значит. Я не могу найти его в строковой документации Python 2.7. Мог бы кто-нибудь сказать мне, как эта часть Python (например, u, r перед строковым значением) называется fx.

путь = у "somedata"

путь = г "somedata"?

Я бы получил документ, чтобы прочитать об этом.

 Смежные вопросы

  • Нет связанных вопросов^_^