Python 在tensorflow 1.1.0中使用tf.app.flags.DEFINE_字符串时出现奇怪的冲突值

Python 在tensorflow 1.1.0中使用tf.app.flags.DEFINE_字符串时出现奇怪的冲突值,python,tensorflow,Python,Tensorflow,python代码很简单,如下所示: import tensorflow as tf import argparse if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('--train') args = parser.parse_args() tf.app.flags.DEFINE_string( "traindata",

python代码很简单,如下所示:

import tensorflow as tf
import argparse


if __name__ == '__main__':
   parser = argparse.ArgumentParser()
   parser.add_argument('--train')
   args = parser.parse_args()

   tf.app.flags.DEFINE_string(
           "traindata",
           'train_data.hdf5',
           'train data'
           )
   print('args: ', args.train)
   print('FLAG: ', tf.app.flags.FLAGS.traindata)
但是,输出很奇怪:

$ python test.py --train 123
args:  123
FLAG:  123

只要
tf.app.flags.DEFINE_string
defined string name的前缀等于
args
参数名的字符串,
tf.app.flags
字符串值与
args
参数值完全相同。这意味着
tf.app.flags.flags
定义无效。

因为
tf.flags
只是
argparse
的一个简单包装器,这是
argparse
的功能,允许前缀匹配参数。Python 3.5及更高版本允许您通过以下方式禁用此功能:

parser=argparse.ArgumentParser(…,allow_abbrev=False)