Итак, я написал фрагмент кода, который сначала запускает команду powershell, чтобы сгенерировать версию файла DAT в формате UTF-8 (возникают проблемы со специальными символами в исходном файле, отсюда и шаг). После чего я пытаюсь открыть вновь созданный файл. Но проблема в том, что я продолжаю получать 'FileNotFoundError: [Errno 2]'. Сначала я пытался использовать только имя файла, поскольку вновь созданный файл находился в той же папке, но затем я попытался также сгенерировать абсолютный путь.
import os
import subprocess
subprocess.Popen('powershell.exe -Command "Get-Content .\Own.DAT | Set-Content -Encoding utf8 Own1.dat"')
filepath = __file__
filepath = filepath[:-7]
with open(filepath+"Own1.dat", "r") as f:
Я могу подтвердить, что filepath + "Own1.dat" выбирает правильный путь к файлу. Пока не могу понять, в чем проблема.
Изменить: Кто-то попросил подтверждения, вот сообщение, которое я получаю:
C:\Users\Debojit\MiniConda3\python.exe "E:/My Documents/Work/essbase/ownership/test.py"
Traceback (most recent call last):
File "E:/My Documents/Work/essbase/ownership/test.py", line 18, in <module>
with open(filepath+"Own1.dat", "r") as f:
FileNotFoundError: [Errno 2] No such file or directory: 'E:/My Documents/Work/essbase/ownership/Own1.dat'
Process finished with exit code 1
Примечание: достаточно любопытно, если я помещу команду powershell в отдельный пакетный файл, напишу код в скрипте python для его запуска, и все работает без проблем. Вот код, о котором я говорю:
import os
import subprocess
from subprocess import Popen
p = Popen("conversion.bat", cwd=r"E:\My Documents\Work\essbase\ownership")
stdout, stderr = p.communicate()
filepath = __file__
filepath = filepath[:-7]
with open(filepath+"Own1.dat", "r") as f:
Файл translation.bat содержит
powershell.exe -Command "Get-Content .\Own.DAT | Set-Content -Encoding utf8 Own1.DAT"
Но я не хочу включать отдельный пакетный файл для сценария Python.
Есть идеи, что может быть причиной проблемы?