Python:无法处理作为脚本参数提供的 Windows 路径

Python: can't process Windows path provided as script argument

我正在尝试编写一个小 python 脚本来修复我的视频的捕获日期。 我正在使用 Windows,我想使用“发送到”功能。

到目前为止,我只是试图根据命令行参数获取视频文件列表:

import argparse
import os

vidExtension = "mp4"

def getVideoFiles(fileFolders):
    files=[]
    folders=[]

    # Create list of folders and files from command line arguments
    for arg in fileFolders:
        curpath = os.path.normpath(arg)
        print(curpath, os.path.isdir(curpath))
        if os.path.isdir(curpath):
            folders.append(curpath)
        elif os.path.isfile(curpath):
            if curpath.lower().endswith(vidExtension):
                files.append(curpath)
        else:
            print("Unrecognized arg: " + arg + "\n    normpath: " + curpath)


if __name__ == '__main__':
    parser = argparse.ArgumentParser(description='Process video files')
    parser.add_argument('foldersFiles', type=ascii, nargs='+',
                    help='Folders/Files to process')
    args = parser.parse_args()
    print(args.foldersFiles)

    getVideoFiles(args.foldersFiles)

启动脚本时(右键单击 SendTo...),这是我得到的输出:

args.foldersFiles:  ["'D:\\Synchro NAS\\Images\\Photos Num\xe9riques\\A Trier\\2020\\z Videos\\temp'", "'D:\\Synchro NAS\\Images\\Photos Num\xe9riques\\A Trier\\2020\\z Videos\\00047.mp4'"]
'D:\Synchro NAS\Images\Photos Num\xe9riques\A Trier20\z Videos\temp' isdir:  False isfile:  False
Unrecognized arg: 'D:\Synchro NAS\Images\Photos Num\xe9riques\A Trier\2020\z Videos\temp'
    normpath: 'D:\Synchro NAS\Images\Photos Num\xe9riques\A Trier20\z Videos\temp'
'D:\Synchro NAS\Images\Photos Num\xe9riques\A Trier20\z Videos[=13=]047.mp4' isdir:  False isfile:  False
Unrecognized arg: 'D:\Synchro NAS\Images\Photos Num\xe9riques\A Trier\2020\z Videos\00047.mp4'
    normpath: 'D:\Synchro NAS\Images\Photos Num\xe9riques\A Trier20\z Videos[=13=]047.mp4'

无法识别文件和文件夹。 我使用 os.path.normpath 来规范化路径,但它不起作用...

一个重要的注意是我在路径字符串中有重音: 真正的路径是:D:\Synchro NAS\Images\Photos Numériques\A Trier20\z Videos

有人可以帮我吗:)!

add_argument 中调用 type 参数设置为 ascii 调用 ascii 函数将传入的字符串转换为自身的表示形式(类似于 repr()),转义反斜杠和非 ascii 字符。

无法将此表示作为路径正确处理。

解决方法:省略调用中的type=ascii