2016-03-15 4 views
0

У меня проблемы с отступом в Python. Поэтому я скачал reindent.py, чтобы исправить ошибки отступа.reindent.py - Не работает из командной строки

Я установил reindent.py с помощью следующей Command-:

pip install reindent 

Но я запустить его из командной строки показывает мне следующее error-:

Traceback (most recent call last): 
    File "/usr/local/bin/reindent", line 3, in <module> 
    main() 
    File "/usr/local/lib/python2.7/dist-packages/reindent.py", line 92, in main 
    check(arg) 
    File "/usr/local/lib/python2.7/dist-packages/reindent.py", line 118, in check 
    if r.run(): 
    File "/usr/local/lib/python2.7/dist-packages/reindent.py", line 177, in run 
    tokenize.tokenize(self.getline, self.tokeneater) 
    File "/usr/lib/python2.7/tokenize.py", line 170, in tokenize 
    tokenize_loop(readline, tokeneater) 
    File "/usr/lib/python2.7/tokenize.py", line 176, in tokenize_loop 
    for token_info in generate_tokens(readline): 
    File "/usr/lib/python2.7/tokenize.py", line 357, in generate_tokens 
    ("<tokenize>", lnum, pos, line)) 
    File "<tokenize>", line 127 
    for w in transcript: 
    ^
IndentationError: unindent does not match any outer indentation level 

Я бегу это с следующая команда:

reindent -n test1.py 

Я думал, что reindent должен был исправить e ошибки не показывают мне, где они произошли.

+0

В 'test1.py' есть индекс indentationError. Исправьте IndentationError, а затем 'reindent.py' будет работать. – unutbu

+0

@unutbu не reindent.py предположим, чтобы исправить ошибку отступа для меня? есть ли способ, который я могу исправить ошибки отступов автоматически? – Machina333

ответ

0

reindent.py изменяет вкладки в пробелы и может создавать нерегулярные отступы в равномерном 4-пространстве. Он не пытается поймать или исправить IndentationError s.

Рассмотрим этот код, который имеет IndentationError:

def foo(): 
    print("Let's go") 
    for i in range(2): <-- IndentationError 
     print('Peay') 

Он производит аналогичное сообщение об ошибке в одном вы получаете:

% reindent.py script.py 
Traceback (most recent call last): 
    ...   
    File "/usr/lib/python2.7/tokenize.py", line 170, in tokenize 
    tokenize_loop(readline, tokeneater) 
    File "/usr/lib/python2.7/tokenize.py", line 176, in tokenize_loop 
    for token_info in generate_tokens(readline): 
    File "/usr/lib/python2.7/tokenize.py", line 357, in generate_tokens 
    ("<tokenize>", lnum, pos, line)) 
    File "<tokenize>", line 9 
    for i in range(2): 
    ^
IndentationError: unindent does not match any outer indentation level 

Оба

def foo(): 
    print("Let's go") 
    for i in range(2): 
     print('Peay') 

и

def foo(): 
    print("Let's go") 
for i in range(2): 
    print('Peay') 

являются действительными способами исправить код. reindent.py (или модуль tokenize, на который он ссылается ) не пытается угадать, какой из кодеров предназначен. Таким образом, IndentationErrors - SyntaxError s, которые по крайней мере иногда требуют вмешательства человека для исправления. .

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