簡體   English   中英

python pd.read_excel [WinError 32] 進程無法訪問該文件,因為它正被另一個進程使用

[英]python pd.read_excel [WinError 32] The process cannot access the file because it is being used by another process

我正在努力解決以下問題:

我收到一個 daily.xls 文件。 但是,該文件的格式與擴展名不同。 有時是.xlsx,有時是.xlsb。 我試圖將此文件的內容讀入 pandas 數據框,因此我編寫了以下代碼:

import openpyxl
import pyxlsb 
import pyodbc
import os
import pandas as pd

try:
    full_name1 = "my_file.xls"
    full_name2 = "my_file.xlsx"
    os.rename(full_name1, full_name2)
    df = pd.read_excel(full_name2, sheet_name = 'Sheet 2', engine = 'openpyxl', skiprows = range(0, 7), usecols = "A:X")

except:
    
    full_name1 = "my_file.xlsx"
    full_name2 = "my_file.xlsb"
    os.rename(full_name1, full_name2)
    df = pd.read_excel(full_name2, sheet_name = 'Sheet 2', engine = 'pyxlsb', skiprows = range(0, 7), usecols = "A:X")    

但是,我收到錯誤:

[WinError 32] 進程無法訪問該文件,因為它正被另一個進程使用:'my_file.xlsx' -> 'my_file.xlsb'

而“my_file.xlsx”似乎仍在使用中。

有沒有解決的辦法?

為什么不瀏覽目錄中的文件列表?:

import os
for directory, subdirlist, filelist in os.walk('C:\\Google Drive\\Python\\Uhlmann\\'):
    for file in filelist:
        df = pd.read_excel(file, sheet_name = 'Sheet 2', engine = 'openpyxl', skiprows = range(0, 7), usecols = "A:X")

我最終找到了一個解決方案 - 它增加了程序的運行時間,但它有效:

import openpyxl
import pyxlsb 
import pyodbc
import os
import pandas as pd
import shutil

full_name1 = "my_file.xls"
full_name2 = "my_file.xlsx"
full_name3 = "my_file.xlsb"

shutil.copy(full_name1, full_name3)
os.rename(full_name1, full_name2)

try:
    df = pd.read_excel(full_name2, sheet_name = 'Sheet 2', engine = 'openpyxl', skiprows = range(0, 7), usecols = "A:X")

except:
    df = pd.read_excel(full_name3, sheet_name = 'Sheet 2', engine = 'pyxlsb', skiprows = range(0, 7), usecols = "A:X")    

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM