在我的Python代码中,我想读取的原始python程序的子目录中有一个文本文件。我知道os.chdir()函数,并且确实可以在读取文件之前将目录更改为文件所在的位置。但是,我希望此代码无论在任何目录下都可在任何计算机上工作,那么是否有一种简单的方法来指定子目录的更改路径,使其在任何计算机上都能工作?
谢谢
-root folder
---run.py
---otherstuff
---lib folder
------otherlib folder
---------textfile.txt
答案 0 :(得分:0)
不幸的是,您试图做的(我认为)是不切实际的。可以使用以下方法扫描子目录:
p = Path('.')
[x for x in p.iterdir() if x.is_dir()]
[PosixPath('.hg'), PosixPath('docs'), PosixPath('dist'),
PosixPath('__pycache__'), PosixPath('build')]
恳请您仔细检查https://docs.python.org/3/library/pathlib.html,以了解是否可以解决问题。
但是,我假设您的代码打算对文本文件执行某些操作,并且您希望能够使用任何计算机将这个(或任何一个)文件提供给程序来运行。解决此问题的最佳方法是使用argparser。这样,您可以在命令行上运行程序时向程序提供文件,只要该文件存在于用户目录中,该文件就会执行。看起来像这样:
#delcare an argparse
parser = argparse.ArgumentParser()
#argparser takes a text file input
parser.add_argument('-file', type=argparse.FileType('r'),
help='please enter file name to read')
#parse arguments
args = parser.parse_args()
#save input file as file
f = args.file.read()
#close the file
args.file.close()
以下是有关argparse的更多信息:https://docs.python.org/3/howto/argparse.html
快乐的编码。