Я столкнулся с этой странной проблемой с открытием / закрытием файлов в python.Я пытаюсь сделать то же самое в Python, что я делал успешно в Matlab, и у меня возникла проблема при общении с некоторыми программами через текстовые файлы.Я нашел странный обходной путь для решения проблемы, но я не понимаю, почему он работает.
У меня есть программное обеспечение, которое взаимодействует с некоторым лабораторным оборудованием.Чтобы связаться с этим программным обеспечением, я записываю файл ('wavefile.txt') в определенную папку, содержащую параметры для отправки на устройство.Затем я пишу другой файл с именем 'request.txt', содержащий местоположение этого первого файла ('wavefile.txt'), который содержит параметры для отправки на устройство.Программное обеспечение постоянно проверяет эту папку, чтобы найти файл с именем «request.txt», и как только оно его находит, оно считывает параметры в файле, который указан в тексте «request.txt», а затем удаляет «request.txt».».Разработчик программного обеспечения / оборудования дает команду дать задержку в 50 мс перед закрытием файла request.txt.
оригинальный код Matlab, который работает:
home = cd;
cd \\CREOL-FAST-01\data
fileID = fopen('request.txt', 'wt');
proj = 'C:\\dazzler\\data\\wavefile.txt';
fprintf(fileID, proj);
pause(0.05);
fclose('all');
cd(home);
оригинальный код Python, который не работает:
home = os.getcwd()
os.chdir(r'\\CREOL-FAST-01\data')
with open('request.txt', 'w') as file:
proj = r'C:\dazzler\data\wavefile.txt'
file.write(proj)
time.sleep(0.05)
os.chdir(home)
Каждый раз, когда программа устройства читает «request.txt»когда он работает с matlab, он удаляет его сразу после того, как matlab закрывает его.Когда я запускаю этот код с python, он работает ИНОГДА, возможно, 1 из каждых 5 попыток будет успешным, и параметры будут отправлены.Файл 'request.txt' всегда удаляется с приведенным выше кодом Python, но введенные параметры явно не отправляются на мое лабораторное устройство.Я предполагаю, что когда я пишу файл в python, программа устройства может прочитать его до того, как python записывает в него текст, поэтому он просто открывает пустой файл, не применяя никаких параметров, а затем удаляя его.
Мой обходной путь в python:
home = os.getcwd()
os.chdir(r'\\CREOL-FAST-01\data')
fileh = open('request.txt', 'w+')
proj = r'C:\dazzler\data\wavefile.txt'
fileh.write(proj)
time.sleep(0.05)
print(fileh.read())
time.sleep(0.05)
fileh.close()
Этот метод в python работает 100% времени.Я открываю файл в режиме w +, и использование fileh.read () абсолютно необходимо.если я удаляю эту строку и все еще включаю дополнительное время сна, она снова будет работать примерно в 1 из 5 попытокЭто кажется мне действительно странным.Любое объяснение или лучшие решения?