Найти - Пользователи
Полная версия: Исключение if для комментария '''комментарий'''
Начало » Python для новичков » Исключение if для комментария '''комментарий'''
1 2 3
py.user.next
Niccolum
Однако, если он читает комментарии, то выводится левые символы (видимо другая кодировка) Соответственно можно как сделать так, чтобы комментарии открывало в читабельной (вроде ASHII) кодировке или не открывало вообще?
Надо указать кодировку при открытии файла.
Niccolum
doza_and
В питоне тройные кавычки это не комментарций а многострочный строковый литерал, посему его тоже надо нумеровать. Комментарии начинаются с # и их тоже обычно надо нумеровать. Можно на русском языке озвучить постановку задачи, которую вы решаете приведенным кодом?
Да. Я хочу данным тренировочным кодом считывать порядковый номер строки, количество символов через пробел и саму строку. Однако при открытии данного файла возникает ошибка, которая, как я понял, касается кодировки, ибо когда я запускаю данный скрипт на питоне 3.4 появляется такая проблема.
0 => 4 :: ‘'’

1 => 101 :: Для запуска необходимо выполнить импорт (import CountLinesChars2)

2 => 132 :: и запуск функции с полным именем .py в кавычках (CountLinesChars2.count('CountLinesChars2.py'))

3 => 4 :: ‘'’

4 => 17 :: def count(name):

5 => 19 :: file = open(name)

6 => 91 ::
Соответственно как её решить? Либо не читать первые строки , начинающиеся с тройных одинарных или двойных кавычек, либо читать “по русски”
Kir@
Niccolum, по-русски.
# -*- coding: utf-8 -*-
f = open('niccolu')
strok=sum(1 for l in open('niccolu'))
#print(strok)
i=0
while i < strok:
    for line in f.readlines():
        i=i+1
        print (i," > ",line)

1  >  :: ‘'’

2 >

3 > :: Привет‚ (import CountLinesChars2)

4 >

5 > :: Пока (CountLinesChars2.count('CountLinesChars2.py'))

6 >

7 > :: ‘'’

8 >

9 > :: def count(name):

10 >

11 > :: file = open(name)

12 >

13 > ::

Проблема точно не в кавычках. У вас ось какая?
Niccolum
Kir@
Niccolum, по-русски.
Как я понял проблема таки не в коде, а в кодировке, ибо в IDLE в вашем коде выдаёт следующее:
1  >  '''
2  >  Для запуска необходимо выполнить импорт (import CountLinesChars2)
3  >  и запуск функции с полным именем .py в кавычках (CountLinesChars2.count('CountLinesChars2.py'))
4  >  '''
5  >  def count(name):
6  >  	file = open(name)
7  >  	[print(index, '=>' ,len(line), '::', line) for index, line in enumerate(file.readlines())]

Вставил всё до символа, включая utf-8. Не впервые встречаюсь с этой проблемой на рабочей системе (win xp sp3). Не домашняя, на работе. Русские символы отказывается читать, в cmd через chcp только 866 кодировка корректно отображается (ASCII и UTF-8 выводит какую то дичь). Я так полагаю проблема в системе?
Niccolum
Прикрепляю файл чтобы вы поняли что я имею ввиду.
Мб что вместо utf-8 в первой строке написать? Название ‘866’ кодировки есть?
P.S. если в notepad++ выбрать кодировку файла/кириллица/ОЕМ 866 - русский язык сам превращаетсяв дичь уже в файле.
Попробовал добавить кодировку в файл
# -*- coding: OEM 866 -*-
Однако пишет что encoding problem: with BOM

Есть идеи?
py.user.next
Niccolum
Есть идеи?
Не видишь написано?
В функцию open() надо кодировку передать.
Kir@
Niccolum
Вчерашний вариант я делал под убунтой.

Сегодня под Win7:
1  >  :: ‘'’

2 >

3 > :: Привет‚ (import CountLinesChars2)

4 >

5 > :: Пока (CountLinesChars2.count('CountLinesChars2.py'))

6 >

7 > :: ‘'’

8 >

9 > :: def count(name):

10 >

11 > :: file = open(name)

12 >

13 > ::

Файл свой пересохраните, например, с помощью notepad++.
Или создайте новый файл и вставьте туда весь текст из исходного файла.
Niccolum

Kir@
NiccolumВчерашний вариант я делал под убунтой.Сегодня под Win7:
Пересохранил файл с помощью notepad++
Выглядит так: (CountLinesChars2.py)
# -*- coding: utf-8 -*-
'''
Для запуска необходимо выполнить импорт (import CountLinesChars2)
и запуск функции с полным именем .py в кавычках (CountLinesChars2.count('CountLinesChars2.py'))
'''
def count(name):
	file = open(name)
	[print(index, '=>' ,len(line), '::', line) for index, line in enumerate(file.readlines())]

Второй ваш файл сохранил так (niccolu.py):
# -*- coding: utf-8 -*-
f = open('CountLinesChars2.py')
strok=sum(1 for l in open('CountLinesChars2.py'))
#print(strok)
i=0
while i < strok:
    for line in f.readlines():
        i=i+1
        print (i," > ",line)
Далее запускаю cmd

python /python34/niccolu.py

Пишет во второй строке ошибка.

Напишите что я не так делаю. Понять не могу - кодировку же надо в начало файла вставлять. К тому же utf-8 у меня криво открывается (см вложение)

Почему я не могу запустить только свой файл? меня устраивает как он запускается, только не устраивает кодировка. Зачем, Kir@, предлагаешь использовать второй модуль? Он чуть дополняет первый, но в нём нет смысла, т.к. мой меня устраивает.
Kir@
Niccolum
Вы что “Пересохранили с помощью notepad++”?
Код программы? Или злосчастный txt файл?

Вот так попробуйте:
f = open(u'niccolu')
Niccolum
В вашем случае попробовал следующее:
#Файл niccoly.py
# -*- coding: utf-8 -*-
f = open(u'niccolu')
strok=sum(1 for l in open(u'niccolu'))
#print(strok)
i=0
while i < strok:
    for line in f.readlines():
        i=i+1
        print (i," > ",line)

Выводит ошибку
Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    f = open(u'niccolu')
FileNotFoundError: [Errno 2] No such file or directory: 'niccolu'

Пересохранил в формате .py как питон. Я не настолько дурак чтоб .txt от .py не отличить.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB