私はvisual studio 2015でpythonスクリプトを実行しようとしていましたが、arparse関数へのパスを指定したいと思いましたが、OSErrorを受け取りました。 「問題を更新する」は、argashがbashの動作ではなくコマンドの値を受け取る方法の違いと思われます。私はコピーされた私はパスがWindowsのcmdとsys.argvのbash - Python
OSError: Error reading file 'C:\\Users\\Sayth\\Documents\\Racing\\XML\\*xml': failed to load external entity "file:/C://Users//Sayth/Documents//Racing//XML//*xml"
を発見していないことをこの
C:\Users\Sayth\Documents\Racing\XML\*xml
またはこの
C:\\Users\\Sayth\Documents\\Racing\\XML\\*xml
のように私はOSErrorのを得るようにそれを指定するかどうか
更新 スクリプトとXMLファイルをテスト・ディ長門ここから私はWindows上の2つの異なるシェルでスクリプトを実行しました。
コマンドでCMD
C:\Users\Sayth\Projects
λ python RaceHorse.py XML\*xml
Traceback (most recent call last):
File "RaceHorse.py", line 42, in <module>
tree = lxml.etree.parse(file)
File "lxml.etree.pyx", line 3427, in lxml.etree.parse (src\lxml\lxml.etree.c:79720)
File "parser.pxi", line 1782, in lxml.etree._parseDocument (src\lxml\lxml.etree.c:115914)
File "parser.pxi", line 1808, in lxml.etree._parseDocumentFromURL (src\lxml\lxml.etree.c:116264)
File "parser.pxi", line 1712, in lxml.etree._parseDocFromFile (src\lxml\lxml.etree.c:115152)
File "parser.pxi", line 1115, in lxml.etree._BaseParser._parseDocFromFile (src\lxml\lxml.etree.c:109849)
File "parser.pxi", line 573, in lxml.etree._ParserContext._handleParseResultDoc (src\lxml\lxml.etree.c:103323)
File "parser.pxi", line 683, in lxml.etree._handleParseResult (src\lxml\lxml.etree.c:104977)
File "parser.pxi", line 611, in lxml.etree._raiseParseError (src\lxml\lxml.etree.c:103843)
OSError: Error reading file 'XML\*xml': failed to load external entity "XML/*xml"
私はのgit bashの にそれを変更するとそれは私がエラーがしかし、それはその作業を示し得るファイルを読み込みます。私はコメントに基づいて更新2
parser = argparse.ArgumentParser(description=None)
def GetArgs(parser):
"""Parser function using argparse"""
# parser.add_argument('directory', help='directory use',
# action='store', nargs='*')
parser.add_argument("files", nargs="+")
return parser.parse_args()
fileList = GetArgs(parser)
シンプルargparse機能を持っている
[email protected] ~/Projects
λ python RaceHorse.py XML/*xml
Traceback (most recent call last):
File "RaceHorse.py", line 50, in <module>
nomination_table.append([race_id] + [nomination.attrib[name] for name in horseattrs])
File "RaceHorse.py", line 50, in <listcomp>
nomination_table.append([race_id] + [nomination.attrib[name] for name in horseattrs])
File "lxml.etree.pyx", line 2452, in lxml.etree._Attrib.__getitem__ (src\lxml\lxml.etree.c:68544)
KeyError: 'race_id'
は、Windowsシェルの使用を可能にするためにグロブを実装しようとしています。 globは、そのオブジェクトがパーサーにオブジェクトlenを持たないというエラーを返します。
更新グロブパーサ
def GetArgs(parser):
"""Parser function using argparse"""
# parser.add_argument('directory', help='directory use',
# action='store', nargs='*')
parser.add_argument("files", nargs="+")
files = glob.glob(parser.parse_args())
return files
filelist = GetArgs(parser)
このエラーを返します。
TypeError was unhandled by user code
Message: object of type 'Namespace' has no len()
あなたが指定したパスを[ファイルURIスキーム](https://en.wikipedia.org/wiki/File_URI_scheme)に変更しようとしているようです。 '\\ C:\ Users \ Sayth \ Documents \ Racing \ XML \ * xml'のようなものを試してみてください。 – martineau
'sys.argv'を見てください。それは、 'argparse'が動作しなければならないものです。 – hpaulj
@martineauは動作しませんでした。システム。 argvはbashに違いが何であるか分からない – sayth