首页 > 解决方案 > Windows批处理文件无法从使用的python文件中找到子文件文件

问题描述

我编写了一个批处理文件来启动多个.py文件,这些文件创建了一个地理数据库 + 要素类(带有域)。使用.py第二个/子.py文件和一个.csv文件来获取他的输入。

我失败了,因为.bat找不到这个.csv。我错过了什么?

的当前代码.bat

@echo on
"c:\Program Files\ArcGIS\Pro\bin\Python\scripts\propy.bat" "C:\Users\<restofthepath>\mainfile.py"
Pause

文件和地图结构如下:

文件和地图结构如下:

我在 *.bat 文件中添加了“调用”,尽管脚本中的暂停现在可以正常工作,但我仍然收到以下错误:

Traceback (most recent call last):   

    File "C:\Users\<restofthepath>\mainfile.py", line 52, in <module> with open(<theCSVfile>) as infile: FileNotFoundError: [Errno 2] No such file or directory: <nameofthecsvfile>.csv'

主脚本中的第 52 行包含以下行:

with open(<theCSVfile>) as infile:
    mw_fields  = csv.DictReader(infile, delimiter = ';')

我是否需要将此“csv.Dictreader”也添加到我的 .bat 文件中?(也许我误解了.batfile的功能)

我在每个文件夹中都有一个主文件(和子文件)。

标签: pythonbatch-file

解决方案


当您将控制权传递给第二个批处理文件时propy,控制权将不会返回到原始批处理文件,因为您没有使用call关键字。

请尝试:

@echo on
call "c:\Program Files\ArcGIS\Pro\bin\Python\scripts\propy.bat" "C:\Users\<restofthepath>\mainfile.py"
Pause

意思是“当另一个文件完成后,call回来继续执行这个文件”。


推荐阅读