python 如何在脚本中添加源路径使用文本文件重命名多个图像

z2acfund  于 2023-05-27  发布在  Python
关注(0)|答案(1)|浏览(348)

这个问题是来自超级用户的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])
xdnvmnnf

xdnvmnnf1#

如果我理解正确的话,你正在寻找一种方法来传递一个变量(例如:source_path)添加到python脚本中。所以,在你用来调用python脚本的windows脚本中,你定义了var source_path = ...,然后在python中你就可以使用它了,对吗?
分两步执行:
1.在windows/Powershell/cmd脚本(cmd.bat)中定义一个变量,可以将其传递给python脚本like explained here
1.让你的python脚本明白它正在被一个参数调用。我建议不要为此导入sysos模块(看起来这就是您在代码示例中尝试的),而是使用argparse模块like explained here
不知道为什么你会需要两个脚本,然后,摆在首位。如果var确实是可变的(即经常变化),那么您可能只想直接从命令行调用python脚本,每次调用脚本时都指定var。如果它是静态的,并且你总是使用相同的3-5个选择中的一个,为什么不在python脚本中添加一个dictionarty并将数据保存在那里呢?两个脚本相互调用,只传递一个var,看起来有点不必要的复杂性?!

相关问题