该文章仅记录发现问题所在,但是并未找到解决办法。
问题描述:
在文件内创建ArgumentParser()对象和调用add_argument()方法添加参数和使用parse_args()解析添加参数的代码写在程序入口内,即写在if __name__=='__main__'下面。示例:
if __name__ == '__main__':
parser = argparse.ArgumentParser(description='Autoformer & Transformer family for Time Series Forecasting')
# random seed
parser.add_argument('--random_seed', type=int, default=2021, help='random seed')
args = parser.parse_args()
当程序正常执行时,其中代码如有保存参数至当前文件夹下的操作,此时代码会将将要保存的文件保存至父级拥有.vscode文件夹下。正常运行之后能够发现results文件夹并未出现在运行文件父级目录下面,而是出现在了父级目录的上一级目录中。
解决办法:
将文件内创建ArgumentParser()对象和调用add_argument()方法添加参数卸载程序入口之外,parse_args()解析添加参数的代码写在程序入口内,即写在if __name__=='__main__'下面。示例:
parser = argparse.ArgumentParser(description='Autoformer & Transformer family for Time Series Forecasting')
# GPU
parser.add_argument('--use_gpu', type=bool, default=True, help='use gpu')
parser.add_argument('--gpu', type=int, default=0, help='gpu')
parser.add_argument('--use_multi_gpu', action='store_true', help='use multiple gpus', default=False)
parser.add_argument('--devices', type=str, default='0,1,2,3', help='device ids of multile gpus')
parser.add_argument('--test_flop', action='store_true', default=False, help='See utils/tools for usage')
if __name__ == '__main__':
args = parser.parse_args()
在将创建对象和添加参数的代码移动位置之后,再次执行代码能够发现程序生成文件生成位置在执行代码同级目录下:
问题原因:当时发现问题之后,只是通过测试解决了该问题,但是并未到问题产生原因。本次所执行文件同级目录下并未生成.vscode文件夹,所以program属性应为默认。在父级目录下面,launch.json文件内带有cwd选项,加了之后不是可以支持相对路径吗?
欢迎各位大佬在评论区指出问题所在!