在 cmd 和 IDE 上 运行 编码的函数内定义一个相对路径文件夹

Define a relative path folder inside a function that run code on both cmd and IDE

我有什么

我有一个代码在 cmd 上 运行 但由于文件路径定义的原因在我的 IDE (pycharm) 上运行不佳。我的项目文件夹结构是:

-broker
    -data
        -sample.pdf
    -output
    -report
    -script
        -functions.py
    -venv

下面的函数在functions.py文件上,需要读取数据文件夹中的sample.pdf文件。

我已经尝试过的

在每个解释器中创建 运行 的两个解决方案。两者都正常工作。

# run well on IDE
pdf_path = pl.Path.cwd() / 'data' / file_name

# run well on cmd
pdf_path = pl.Path(r'../data') / file_name

这是完整的代码。

def extract_pdf(file_name):
    """
    A function to extract data from stock market broker notes

    """

    # load modules
    import PyPDF2 as p2
    import pathlib as pl

    # assign file path to a variable
    pdf_path = pl.Path(r'../data') / file_name

    # read pdf file
    with open(pdf_path, 'rb') as pdf_file:
        pdf_fread = p2.PdfFileReader(pdf_file)

        # extract all pages from pdf file
        n = 0
        while n < pdf_fread.getNumPages():
            page = pdf_fread.getPage(n)
            print(page.extractText())
            n = n + 1

预期和实际结果

此代码 运行 在 cmd 上很好,因为我必须进入脚本文件夹和 运行 文件或导入模块。

我很感激任何帮助创建一条在 cmd 和 IDE 环境中都有效的路径。

如果我对你的理解是正确的 - 你 运行 来自 cmd "sits" 的脚本在 script 文件夹中。在 PyTorch 中 运行 的函数,我们直接在 broker 目录中调用它 main - "sits"。

因此,您可以在文件夹树中向上移动您的脚本,或者为 main 函数指定一个不同的工作目录,因此当它在 IDE 中时 运行 它"home directory" 与 cmd 运行 时的脚本相同。

您可以在 PyCharm 中通过编辑 "Run/Debug Configurations" 中的工作目录来执行此操作。 查看此屏幕截图中的最后一个选项: