从子目录读取文本文件

时间:2019-02-11 17:23:25

标签: python text import subdirectory

在我的Python代码中,我想读取的原始python程序的子目录中有一个文本文件。我知道os.chdir()函数,并且确实可以在读取文件之前将目录更改为文件所在的位置。但是,我希望此代码无论在任何目录下都可在任何计算机上工作,那么是否有一种简单的方法来指定子目录的更改路径,使其在任何计算机上都能工作?

谢谢

-root folder
---run.py
---otherstuff
---lib folder
------otherlib folder
---------textfile.txt

1 个答案:

答案 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

快乐的编码。