从批处理文件FileNotFoundError运行Python脚本时出错:[Errno 2]没有这样的文件或目录:';[]和#x27;

从批处理文件FileNotFoundError运行Python脚本时出错:[Errno 2]没有这样的文件或目录:';[]和#x27;,python,Python,当我尝试运行python脚本的批处理文件时,我得到了一个错误 D:\Sandbox\Python\Python Scripts>AQACompareBooks.py "D:/Sandbox/AQA/OrderAnalysis/Customer 1 OrderAnalysis -1 2018-05-08.xlsx" [] Traceback (most recent call last): File "D:\Sandbox\Python\Python Scripts\AQACompare

当我尝试运行python脚本的批处理文件时,我得到了一个错误

D:\Sandbox\Python\Python Scripts>AQACompareBooks.py "D:/Sandbox/AQA/OrderAnalysis/Customer 1 OrderAnalysis -1 2018-05-08.xlsx"
[]
Traceback (most recent call last):
  File "D:\Sandbox\Python\Python Scripts\AQACompareBooks.py", line 33, in <module>
    xls = pd.ExcelFile(file)
  File "D:\Dev\Sandbox\Python\lib\site-packages\pandas\io\excel.py", line 260, in __init__
    self.book = xlrd.open_workbook(io)
  File "D:\Dev\Sandbox\Python\lib\site-packages\xlrd\__init__.py", line 116, in open_workbook
    with open(filename, "rb") as f:
FileNotFoundError: [Errno 2] No such file or directory: '[]'
Python代码

import pandas as pd 
import numpy as np  
import os
import sys


print(sys.argv[1:])
file = format(sys.argv[1:])
xls = pd.ExcelFile(file)
如果我在代码中手动设置路径,一切都会正常工作

i、 e

以前有人遇到过这个问题吗

批处理文件和脚本位于同一文件夹中。
我要加载的文件不是

这看起来很像是Windows的问题,与
.py
文件的扩展关联。在一次Windows安装中,我检查了测试Python脚本接收参数的位置,注册表项
HKEY\U CLASSES\U ROOT\Python.File\Shell\open\command
设置为
“C:\Windows\py.exe”“%L”%*
(包括那些引号)。尾随的
%*
传递Python随后存储在
sys.argv
中的参数

第二个是
格式的部分(sys.argv[1:])
;该片段将始终生成一个列表,而您想要的文件名存储在单个元素
sys.argv[1]
中。简单地用它来代替

感谢tdelaney指出这些关联,可以使用
assoc
ftype
命令检查关联(如果是管理员,则设置关联):

C:\Users\yann>assoc .py
.py=Python.File

C:\Users\yann>ftype Python.File
Python.File="C:\WINDOWS\py.exe" "%L" %*

照片上有什么东西吗?哪一行失败了?您显示的代码不会产生该错误。我们需要看到被破坏的部分以提供建议。打印没有显示任何内容。据我所知,代码必须产生错误。如果删除批处理文件中的参数,并在脚本中手动设置路径。i、 e.file='path'一切正常。如果要在字符串文本中使用未转换的反斜杠,则应使用。我也不知道为什么您似乎丢失了参数,但是
argv[1://code>仍然是一个列表(包含0个或更多元素的切片),因此那些
[]
字符可能来自
格式调用。你显示的异常来自我们不知道的代码。嗨,Yann,谢谢你的回答。我怎么检查这个。同样对于我使用的计算机,python安装在D驱动器上,而不是安装操作系统的C驱动器上。请尝试注册表编辑器
regedit
(请注意,注册表包含许多其他内容,包括更重要的设置,因此不要随意编辑).在命令行上的
ftype Python.File
应显示文件关联。然后检查
assoc.py
以查找所调用的关联。您的Python安装似乎不是由普通安装程序完成的,并且可能缺少允许它传递参数的功能。我重新安装了Python,并且能够在您的示例中使用cmd中的命令接收上述结果。然而,批处理仍然失败。
file = 'D:\Sandbox\AQA\OrderAnalysis\Customer1 OrderAnalysis -1 2018-05-08.xlsx'
C:\Users\yann>assoc .py
.py=Python.File

C:\Users\yann>ftype Python.File
Python.File="C:\WINDOWS\py.exe" "%L" %*