24

如果我们从命令行参数传递文件并提取文件,谁能指导我如何获取文件路径。如果我们还需要检查文件是否存在于特定目录中

python.py /home/abhishek/test.txt

获取文件路径并检查 test.txt 是否存在于 abhishek 文件夹中。

我知道这可能很容易,但我对 pytho 有点陌生

4

4 回答 4

30
import os
import sys

fn = sys.argv[1]
if os.path.exists(fn):
    print os.path.basename(fn)
    # file exists
于 2013-01-16T14:15:33.037 回答
13

从 python 3.4 开始,您可以将argparsepathlib一起使用:

import argparse
from pathlib import Path

parser = argparse.ArgumentParser()
parser.add_argument("file_path", type=Path)

p = parser.parse_args()
print(p.file_path, type(p.file_path), p.file_path.exists())
于 2019-05-23T09:00:42.040 回答
11

我认为最优雅的方式是使用ArgumentParser这种方式,您甚至可以获得-h帮助用户弄清楚如何传递参数的选项。我还包括了一个可选参数 ( --outputDirectory)。

现在你可以简单地执行python3 test.py /home/test.txt --outputDirectory /home/testDir/

import argparse
import sys
import os

def create_arg_parser():
    # Creates and returns the ArgumentParser object

    parser = argparse.ArgumentParser(description='Description of your app.')
    parser.add_argument('inputDirectory',
                    help='Path to the input directory.')
    parser.add_argument('--outputDirectory',
                    help='Path to the output that contains the resumes.')
    return parser


if __name__ == "__main__":
    arg_parser = create_arg_parser()
    parsed_args = arg_parser.parse_args(sys.argv[1:])
    if os.path.exists(parsed_args.inputDirectory):
       print("File exist")
于 2017-11-16T07:50:18.460 回答
4

用这个:

import sys
import os

path = sys.argv[1]

# Check if path exits
if os.path.exists(path):
    print "File exist"

# Get filename
print "filename : " + path.split("/")[-1]
于 2013-01-16T14:17:22.817 回答