jquery 在文件进入文件夹之前运行外部程序

wa7juj8i  于 2023-08-04  发布在  jQuery
关注(0)|答案(1)|浏览(105)

我用 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)


我只是,保存在临时文件夹中的文件,并在该文件是好的,我替换为上传文件夹。
谢谢

vnzz0bqm

vnzz0bqm1#

检查文件是否存在的代码没有问题,要么是file字符串格式不正确,要么是工作目录不是您所期望的。确保你知道这些文件将在哪里结束,以及它们将被称为什么,然后与你的路径file和你的工作目录os.getcwd()进行比较,并从那里开始。
另外,你不需要为flagbreak而烦恼,只需检查exists():)

def run_analysis(self):
        # make sure this path is being built correctly
        file = f'{self.BASE_URL}{self.INPUT_FILE}{self.name}{self.ext}'

        # simplify loop
        while not os.path.exists(file):
            print('file not found!')
            time.sleep(1)
        self.process_file(file)    
    

    def process_file(self, f):
        # do stuff
        ...

字符串

相关问题