这个问题是来自超级用户的migrated,因为它可以在Stack Overflow上回答。Migrated 3天前.
我想将“source_paths”添加到我的脚本中,以便它可以使用cmd.bat在外部目录上运行
示例cmd.bat
echo off
Rename.py [Folder_Images] [listname.txt]
pause
代码脚本Rename.py
import pathlib
IMG_DIR = pathlib.Path('.\Folder_Images')
with open('listname.txt') as jabber:
content = jabber.read().splitlines()
director = sorted(IMG_DIR.iterdir())
for src, dest in zip(director, content):
src.rename(IMG_DIR / f'{dest}{src.suffix}')
我发现这个代码我试图添加我得到一个错误没有这样的文件。
密码
if __name__ == '__main__':
import os
import sys
source_paths = []
if len(sys.argv) > 1:
for i, path in enumerate(sys.argv[1:]):
if i < 2 and not os.path.isfile(path):
raise ValueError(f'Not a valid path or file does not exist: {path}')
source_paths.append(path)
if i < 2:
raise ValueError(f'Three path arguments needed')
source_paths = source_paths[0:2]
source_paths = [os.path.abspath(path) for path in source_paths]
Rename(source_paths[0], source_paths[1])
1条答案
按热度按时间xdnvmnnf1#
如果我理解正确的话,你正在寻找一种方法来传递一个变量(例如:
source_path
)添加到python脚本中。所以,在你用来调用python脚本的windows脚本中,你定义了varsource_path = ...
,然后在python中你就可以使用它了,对吗?分两步执行:
1.在windows/Powershell/cmd脚本(
cmd.bat
)中定义一个变量,可以将其传递给python脚本like explained here1.让你的python脚本明白它正在被一个参数调用。我建议不要为此导入
sys
和os
模块(看起来这就是您在代码示例中尝试的),而是使用argparse
模块like explained here不知道为什么你会需要两个脚本,然后,摆在首位。如果var确实是可变的(即经常变化),那么您可能只想直接从命令行调用python脚本,每次调用脚本时都指定var。如果它是静态的,并且你总是使用相同的3-5个选择中的一个,为什么不在python脚本中添加一个dictionarty并将数据保存在那里呢?两个脚本相互调用,只传递一个var,看起来有点不必要的复杂性?!