![](/img/trans.png)
[英]PermissionError: [WinError 32] The process cannot access the file because it is being used by another process: (Open Excel File) in Python
[英]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.