恐れ入ります。
xslxをcsvにかんたんに変換できるということで試しているのですが、
すべてのxslxをcsvにしようと思ってforループにしたら突然動かなくなってしまいました。
動いたコード(正常に完了しました)
import pandas df = pandas.read_excel('test.xlsx', sheet_name=0) df.to_csv('test.csv', index=False)
これを
import glob import os import pandas from pathlib import Path files = glob.glob("*") for file in files: fname, ext = os.path.splitext( os.path.basename(file) ) if ext == ".xlsx": csv= fname + ".csv" if Path(csv).exists(): print (f"{fname} exists.") else: print (file) #・・・(1) print (csv) df = pandas.read_excel(file, sheet_name=0) #・・・(2) df.to_csv(f'{fname}.csv', index=False)
のようにしてみたらエラーになってしまいます。
Traceback (most recent call last): File "E:\*********\allfile.py", line 18, in <module> df = pandas.read_excel(file, sheet_name=0) File "C:\Users\1\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\util\_decorators.py", line 311, in wrapper return func(*args, **kwargs) File "C:\Users\1\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\io\excel\_base.py", line 364, in read_excel io = ExcelFile(io, storage_options=storage_options, engine=engine) File "C:\Users\1\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\io\excel\_base.py", line 1191, in __init__ ext = inspect_excel_format( File "C:\Users\1\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\io\excel\_base.py", line 1070, in inspect_excel_format with get_handle( File "C:\Users\1\AppData\Local\Programs\Python\Python39\lib\site-packages\pandas\io\common.py", line 710, in get_handle handle = open(handle, ioargs.mode) FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\$test.xlsx'
(1)のprintではtest.xlsxとなっているので
(2)では df = pandas.read_excel("test.xlsx", sheet_name=0)
となっているだろうと思うのですが・・・
エラーをよく見ると何故か
No such file or directory: 'C:\Users$test.xlsx'
となっています。
その前のPRINTでは'C:\Users$'はくっついていないのになぜかくっついてしまうようです・・?
(2)の部分を変数を使わないで実行してみるとちゃんと動きます。
変数の内容がおかしいのかと(1)でprintしてみましたがおかしくはなかったです。
一体どういうことなのでしょうか・・・。
回答1件
あなたの回答
tips
プレビュー