当前位置:  开发笔记 > 编程语言 > 正文

如何生成文件路径?

如何解决《如何生成文件路径?》经验,为你挑选了2个好方法。

我的脚本必须在Linux和Windows中运行.并且脚本接收2个模式字符串作为参数.

A:"C:\test" or "/usr/local/test" (with no suffix)
B:"C:\test\" or "/usr/local/test/" (with suffix "\","/")

以下代码没有问题.但我不想使用特定字符"/".因为它接近bug,我想.你有什么想法吗?

# -*- coding: utf-8 -*-

import argparse

def parse_args():
    parser = argparse.ArgumentParser(description='This script is ...')
    parser.add_argument('--confdir', type=str, required=True)
    parser.add_argument('--outdir', type=str, required=True)
    return parser.parse_args()

if __name__ == '__main__':
    args = parse_args()
    # "C:/test" or "C:/test/" in Windows
    # "/usr/local/test" or "/usr/local/test/" in Linux
    print(args.confdir)

    f = open(args.confdir + "/" + 'sample.txt')
    print(f.read())

jfs.. 6

您可以使用诸如pathlib.Path自动处理尾随路径分隔符的对象,例如:

#!/usr/bin/env python3
import argparse
import pathlib

parser = argparse.ArgumentParser()
parser.add_argument('--confdir', type=pathlib.Path, default='.')
args = parser.parse_args()
print(args.confdir)
path = args.confdir / 'sample.txt'
print(path)
print(path.read_text())


ShadowRanger.. 5

使用os.path.join是最好的方法,取代:

open(args.confdir + "/" + 'sample.txt') 

有:

open(os.path.join(args.confdir, 'sample.txt'))

os.path.join将正确地防止加倍分隔符,因此如果confdir以斜杠结尾无关紧要,它将仅产生一个斜杠产生输出.

在极少数情况下,可能要使用os.sepos.altsep替代,但是这是罕见的.您可能使用它们的主要原因是lstrip在路径组件上明确地删除不正确的前导斜杠; 尾部斜杠无关紧要(os.path.join重复数据删除),但是前导斜杠被视为绝对路径的开头,并丢弃以前的组件.



1> jfs..:

您可以使用诸如pathlib.Path自动处理尾随路径分隔符的对象,例如:

#!/usr/bin/env python3
import argparse
import pathlib

parser = argparse.ArgumentParser()
parser.add_argument('--confdir', type=pathlib.Path, default='.')
args = parser.parse_args()
print(args.confdir)
path = args.confdir / 'sample.txt'
print(path)
print(path.read_text())



2> ShadowRanger..:

使用os.path.join是最好的方法,取代:

open(args.confdir + "/" + 'sample.txt') 

有:

open(os.path.join(args.confdir, 'sample.txt'))

os.path.join将正确地防止加倍分隔符,因此如果confdir以斜杠结尾无关紧要,它将仅产生一个斜杠产生输出.

在极少数情况下,可能要使用os.sepos.altsep替代,但是这是罕见的.您可能使用它们的主要原因是lstrip在路径组件上明确地删除不正确的前导斜杠; 尾部斜杠无关紧要(os.path.join重复数据删除),但是前导斜杠被视为绝对路径的开头,并丢弃以前的组件.

推荐阅读
LEEstarmmmmm
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有