繁体   English   中英

如何将存储在一个 python 文件中的变量中的文件路径传递给另一个 python 文件以供其读取?

[英]How to pass a filepath stored in a variable in one python file to another python file to be read by it?

我想将一个 python 脚本中抓取的变量(文件路径)传递给我的另一个 python 脚本,以便它可以读取文件并进行必要的计算。 两个 python 脚本都按照我希望的方式运行,它们只是没有相互交流。

第一个脚本是NoShowGUI.py ,用于浏览和获取 csv 文件的位置并将其存储在booked_file_path中:

def open_file():
browse_text.set('Loading...')
booked_file_path = askopenfile(parent=root, mode='rb', title='Choose a file', filetype=[('CSV file', '*.csv')])
if booked_file_path:
    read_csv = (booked_file_path)
    browse_text.set('Loaded')

def run():
    os.system('NoShowCalc.py')
    calculate_text.set("Calculating...")

第二个脚本是NoShowCalc.py ,用于读取 csv 以便它可以对检索到的booked_file_path运行分析:

import pandas as pd

booked = pd.read_csv(booked_file_path, parse_dates=['Appointment Date'])

但是,当我尝试读取第二个 py 文件中的 csv 时,我返回NameError: name 'booked_file_path' is not defined

Now someone told me that to pass a variable between python files, I have to store it in a function in the first file and then call that function in the second python file. 从我目前的情况来看,它看起来像是存储在 function 中。 我只是不知道如何在我的第二个 py 文件中正确调用它。

我还尝试from NoShowCalcGUI.py import open_file导入我的第一个 py 文件,但它不起作用,当 GUI 弹出时,它不断打开新的 gui 的 windows,而我将 select 我的“计算”按钮。

谁能帮我将booked_file_path变量传递给我的第二个py 文件,以便它可以进行必要的计算? 同样在某种程度上,当我 select 我的“计算”按钮时,程序不会继续循环?

使用环境变量。

import os

# Set environment variables
os.environ['API_USER'] = 'username'
os.environ['API_PASSWORD'] = 'secret'

# Get environment variables
USER = os.getenv('API_USER')
PASSWORD = os.environ.get('API_PASSWORD')

如果上面不起作用...使用下面

如何使用 dotenv 管理环境变量

随着您使用的环境变量数量的增加,您可能希望使用 dotenv 之类的库来帮助管理它们。 它允许您通过从另一个文件中读取文件来设置或更新特定目录中文件的环境变量。 当您通过将产品放在不同的目录中来描述产品的不同阶段时,这很有用。 通过使用 dotenv,您可以确保环境变量自动调整到您在该目录中工作时选择的环境。 但是请记住,dotenv 是一个单独的文件,并且在跨系统转换时注意不要忽略它。

dotenv 从名为.env 的文件中读取环境变量。 该文件的格式应如下:

api-token = "abcdef_123456"

#Once that’s created and placed in the same folder as your Python file, environment variables can be called like so:

from dotenv import load_dotenv
load_dotenv()
import os
token = os.environ.get("api-token")

与 Python 的许多方面一样,只要您拥有正确的工具,实现环境变量并不麻烦。 通过使用 os package(尤其是 os.environ)和 dotenv,当情况需要时,您就拥有了开始使用 Python 中的环境变量所需的所有工具。

参考: https://www.nylas.com/blog/making-use-of-environment-variables-in-python/

假设您有 2 个文件, test1.pytest2.py

测试1.py:

def my_func():
    FilePath = 'PATH'
    return FilePath

测试2.py:

from test6 import my_func

print(my_func())

这里我们从test2.py中导入function my_func ,然后执行那个function(带返回值)然后打印出来。 您可以做两件事: 将 test1.py 包裹在一个返回文件路径的 function 中,然后导入 function b。 将文件包装在if __name__ == "__main__":循环中并使用环境导入

您可以将 csv 路径作为参数传递给第二个 python 脚本。 这种方法增加了一些可移植性,因为您以后可以根据需要将第二个脚本替换为其他脚本。

NoShowGUI.py

os.system(f'NoShowCalc.py {booked_file_path}')

NoShowCalc.py

import pandas as pd
import sys

booked = pd.read_csv(sys.argv[1], parse_dates=['Appointment Date'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM