VSC выдает ошибку, но Python простаивает? - PullRequest
1 голос
/ 24 марта 2019

Я написал программу, и когда я запускаю ее в коде Visual Studio, она выдает ошибку, но не тогда, когда я запускаю ее в Python IDLE. Я установил переменную окружения, но она все еще не работает. Можете ли вы сказать мне, как это исправить

Это также происходит, когда я импортирую файл и все виды мест, где я хочу использовать другой файл

Это мой файл compiler.py

fileName = "file.txt"

file = open("file.txt", "r+")

def file_len(fname):
    with open(fname) as f:
        for i, l in enumerate(f):
            pass
    return i + 1

for loop in range(file_len(fileName) + 1) :
    print(loop)

и это мой file.txt

hallo

Когда я запускаю это в коде Visual Studio, это выдает эту ошибку

PS C:\Users\Harry Kruger\Documents\code> & "C:/Program Files (x86)/Python37-32/python.exe" "c:/Users/Harry Kruger/Documents/code/quicks/compiler.py"
hallo
Traceback (most recent call last):
  File "c:/Users/Harry Kruger/Documents/code/quicks/compiler.py", line 4, in <module>
    file = open("file.txt", "r+")
FileNotFoundError: [Errno 2] No such file or directory: 'file.txt'

И когда я запускаю ir в Python IDLE, он работает, и вывод такой:

0
1

1 Ответ

1 голос
/ 24 марта 2019

Полагаю, что вы запускаете python IDLE в каталоге "c:/Users/Harry Kruger/Documents/code/quicks. Поэтому ваш код пройдет, потому что в этом каталоге (вероятно?) Также есть file.txt.
Однако в VS Code вы, кажется, запускаете python в каталоге C:\Users\Harry Kruger\Documents\code, где file.txt отсутствует, и, следовательно, ваш код не выполняется.
Чтобы это исправить и запустить свой код в VS Code, у вас есть два варианта:

  1. В VS Code powershell перейдите в каталог, содержащий file.txt. В вашем случае вы сможете сделать это, введя cd "c:/Users/Harry Kruger/Documents/code/quicks", а затем позвоните по коду.
  2. Вы можете изменить свой код, чтобы использовать абсолютный путь к файлу. Затем вы можете вызвать его из любого каталога. Для этого вы должны изменить оператор with open(). Заменить его на:
    from os import path
    with open(path.join(path.abspath(path.dirname(__file__)), 'file.txt'), 'r+') as f:
    
    этот фрагмент будет искать абсолютный путь к файлу и открывать его.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...