You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Selenium+Python对文件夹内每个文件重复执行上传及后续任务?

Solution for Batch Processing Files in Your Python Automation Project

Hey there! Congrats on building out the single-file workflow for your first Python automation project—that’s a solid start. Let’s get that batch processing of 20 files up and running smoothly. Here’s a step-by-step breakdown and revised code to handle sequential file processing:

Key Fixes & Additions

  • Dynamic File Paths: Modify your file_upload function to accept a file path as a parameter, so it works for any file instead of hardcoding one.
  • File List Retrieval: Use Python’s os module to grab all files from your target folder, then sort them to ensure sequential processing.
  • Loop Through Files: Wrap your existing workflow (upload → job1 → job2) in a loop to repeat for every file.

Revised Code (Non-Class Version)

First, make sure to import the os module to handle file system operations:

import os
# If you need waits between steps, uncomment the line below
# import time

def file_upload(file_path):
    upload_btn = driver.find_element_by_xpath("//your-actual-xpath-here") # Replace with your button's real XPath
    upload_btn.send_keys(file_path)

def job1():
    # Your existing set of actions here
    pass

def job2():
    # Your existing set of actions here
    pass

if __name__ == '__main__':
    # Replace this with the actual path to your local folder
    target_folder = "/path/to/your/local/files"
    
    # Get all files in the folder (filter out subfolders if any)
    all_files = [
        file for file in os.listdir(target_folder) 
        if os.path.isfile(os.path.join(target_folder, file))
    ]
    
    # Sort files to process them in order (adjust sorting logic if needed)
    sorted_files = sorted(all_files)
    
    # Loop through each file and run the workflow
    for filename in sorted_files:
        # Build the full path to the file (avoids path errors)
        full_file_path = os.path.join(target_folder, filename)
        print(f"Processing file: {filename}")
        
        try:
            # Execute your workflow
            file_upload(full_file_path)
            job1()
            job2()
            
            # Optional: Add a short wait if the system needs time to reset
            # time.sleep(3)
        except Exception as e:
            # Handle errors without stopping the entire batch
            print(f"Failed to process {filename}: {str(e)}")
            # Uncomment below if you want to stop on first error
            # break

If Your Functions Are Part of a Class

If your original code was inside a class (indicated by the self parameter), adjust it like this to maintain proper state for your driver:

import os

class FileAutomation:
    def __init__(self, driver):
        self.driver = driver  # Pass your initialized driver here

    def file_upload(self, file_path):
        upload_btn = self.driver.find_element_by_xpath("//your-actual-xpath-here")
        upload_btn.send_keys(file_path)

    def job1(self):
        # Your actions using self.driver
        pass

    def job2(self):
        # Your actions using self.driver
        pass

if __name__ == '__main__':
    # Assume you've already initialized your driver here
    # driver = webdriver.Chrome() # Example initialization
    
    automation = FileAutomation(driver)
    target_folder = "/path/to/your/local/files"
    sorted_files = sorted([f for f in os.listdir(target_folder) if os.path.isfile(os.path.join(target_folder, f))])
    
    for filename in sorted_files:
        full_path = os.path.join(target_folder, filename)
        print(f"Processing {filename}...")
        try:
            automation.file_upload(full_path)
            automation.job1()
            automation.job2()
        except Exception as e:
            print(f"Error with {filename}: {str(e)}")

Important Notes

  • Fix the XPath: Replace "//your-actual-xpath-here" with the real XPath of your upload button—this is critical for the upload function to work.
  • Driver Initialization: Make sure your driver is initialized once before the loop (not inside it) to avoid opening multiple browser windows.
  • Error Handling: The try-except block ensures a single failed file doesn’t crash the entire batch. Adjust this based on whether you want to stop or continue on errors.
  • Sorting: The sorted() function sorts files alphabetically. If you need a different order (e.g., by creation date), you can use os.path.getctime() to sort by timestamp.

Let me know if you run into issues with file paths, driver behavior, or loop logic—I’m happy to help refine this further!

内容的提问来源于stack exchange,提问作者Humble_boy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:20:13