回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我有两个额外的选择,我需要验证第二个考虑到第一。你知道吗</p>
<p>我试过这个:</p>
<pre><code>#!/bin/env python3
# -*- coding: utf-8 -*-
from argparse import ArgumentParser, ArgumentTypeError
from os import getenv, path
def invalidArgument(value, text= None):
raise ArgumentTypeError("%s %s" % (value, text))
def directory(value):
if path.isdir(value):
return value
invalidArgument(value, "directory not found")
def parsing():
parser= ArgumentParser("")
parser.add_argument("-dir", type= directory, action= "store", default= "/home", help= "Base directory")
parser.add_argument("-loc", action= "store_true", help= "Takes into account locale")
namespace, other= parser.parse_known_args()
if namespace.loc:
l= getenv("LANG", "en")[0:2].lower()
if l == "en":
namespace.loc= False
else:
if path.isdir(path.join(namespace.dir, l)):
namespace.loc= path.join(namespace.dir, l)
else:
invalidArgument(path.join(namespace.dir, l), "directory not found $LANG not valid")
return namespace, other
if __name__ == "__main__":
namespace, other= parsing()
print("Base directory:", namespace.dir)
print("Locale directory:", namespace.loc)
</code></pre>
<p>而我得到了/tst.py公司-地址):</p>
<pre><code>Traceback (most recent call last):
File "./tst.py", line 32, in <module>
namespace, other= parsing()
File "./tst.py", line 28, in parsing
invalidArgument(path.join(namespace.dir, l), "directory not found or $LANG not valid")
File "./tst.py", line 8, in invalidArgument
raise ArgumentTypeError("%s %s" % (value, text))
argparse.ArgumentTypeError: /usr/share/fr directory not found $LANG not valid
</code></pre>
<p>如果我打电话给:</p>
<pre><code>./tst.py
</code></pre>
<p>我需要:</p>
<pre><code>Base directory: /home
Locale directory: False
</code></pre>
<p>如果我打电话给:</p>
<pre><code>./tst.py -loc
</code></pre>
<p>我需要:</p>
<pre><code>Base directory: /home
Locale directory: /home/fr
</code></pre>
<p>如果我打电话给:</p>
<pre><code>./tst.py -dir=/home/foo -loc
</code></pre>
<p>我需要:</p>
<pre><code>Base directory: /home/foo
Locale directory: /home/foo/fr
</code></pre>
<p>有人对我有什么想法或线索吗?你知道吗</p>