将Windows风格的路径作为批处理文件中的参数传递给python

问题描述 投票:0回答:1

作为新手

python

我正在从

batch
调用
Delft-FEWS
文件。这个
batch
文件看起来像这样:

%1 %2 %3 > logfile.txt

Delft-FEWS
中定义了参数,这使得
batch
文件在
Windows
中调用之前看起来像这样:

python some-script.py "C:\folder1\folder2"

我的问题是,我无法更改传递给

python
的参数中的“\”,因为它们是在
Delft-FEWS
深处定义的。

python
中,参数的用法如下:

import os
import sys
var = sys.argv[1]

由于

var
包含 '\' ,它被解释为转义字符,因此我在运行代码时收到错误。 我读到
python
提供了通过在字符串前面添加“r”来将字符串解释为文字的可能性。如果我手动这样做:

var = r"C:\folder1\folder"

它工作完美。但是,我无法设法通过

python
文件将其传递给
batch
脚本,并且将其添加到脚本本身中也不起作用。

这是我迄今为止尝试过的:

  1. batch
    -文件:

    %1 %2 r%3 > logfile
    

    这使得批处理文件看起来像这样:

    python some-script.py "rC:\folder1\folder2"
    
  2. python
    代码中:

    var = f"r{var}"

两种方式都会导致相同的错误,因为字符串更改为“rC:older1 old2”,但

python
不会将“r”解释为文字字符串指示符。

我该如何解决这个问题?

python cmd
1个回答
0
投票

运行 python 脚本时,有多种方法可以获取文件路径。

你的方法非常简单并且应该可行,但我建议你使用一个库来获取像“argparse”这样的参数。 (因为你使用Python)

您可以像这样获取文件路径或文件夹路径:

import argparse

parser = argparse.ArgumentParser(description="Process a file path.")
parser.add_argument("file_path", help="The path to the file")

args = parser.parse_args()
print("File path entered:", args.file_path)

它还制作了一个简单的 CLI(命令行界面)

© www.soinside.com 2019 - 2024. All rights reserved.