我用 AJAX ,python和flask上传了它,之后我用加载的文件调用了一个外部程序,但是python的执行发生在文件进入文件夹之前,然后外部程序无法获得输入。我想检查文件是否在目录中,并让它运行时,它是,但它没有发生
我尝试了所有我想到的方法,用while,用try except,用if,用os.path.isfile()...但这些方法都不管用在php中,apache服务器使这篇文章更快,或者我做错了什么。
我最后尝试的代码
def run_analysis(self):
file = f'{self.BASE_URL}{self.INPUT_FILE}{self.name}{self.ext}'
flag = True
while flag:
if os.path.exists(file):
self.process_file(file)
flag = False
break
else:
print('file not found!')
time.sleep(1)
def process_file(self, f):
command_assembly = f'{self.ANALYSIS_APP} {self.PARAM_OUT} {self.BASE_URL}{self.OUTPUT_DIR} {f}'
result = subprocess.run(command_assembly, capture_output=True, text=True, shell=True)
return result.stdout
字符串
编辑1:
@EAW这里的代码上传,但它简化:
def handle(self, file, app):
my_file = File(file, app)
temp_path = None
temp_path = my_file.save_file(my_file.get_filename())
check_inside_file = my_file.open_file(temp_path + my_file.get_filename())
if not check_inside_file:
os.remove(temp_path + my_file.get_filename())
return jsonify({'error': 'File is not in the format'}), 400
if my_file and check_inside_file and my_file.check_extensions():
new_filename = my_file.change_filename()
my_file.replace(temp_path)
my_file.rename(new_filename)
new_filename_noextension = my_file.remove_extension(new_filename)
return new_filename_noextension
型
在文件类中
def replace(self, src):
dst = os.path.join(self.app.config['UPLOAD_FOLDER'] + self.file.filename)
src = os.path.join(self.app.config['UPLOAD_TEMP_FOLDER'] + self.file.filename)
os.replace(src, dst)
型
我只是,保存在临时文件夹中的文件,并在该文件是好的,我替换为上传文件夹。
谢谢
1条答案
按热度按时间vnzz0bqm1#
检查文件是否存在的代码没有问题,要么是
file
字符串格式不正确,要么是工作目录不是您所期望的。确保你知道这些文件将在哪里结束,以及它们将被称为什么,然后与你的路径file
和你的工作目录os.getcwd()
进行比较,并从那里开始。另外,你不需要为
flag
或break
而烦恼,只需检查exists()
:)字符串