Hướng dẫn python pass variable from one file to another - python chuyển biến từ tệp này sang tệp khác

Tôi có 3 tệp PY; 1 là tệp chính chạy chức năng từ 2 tệp PY khác. 2 tệp khác sẽ được lấy dữ liệu từ tệp Excel. Tôi sẽ cần người dùng nhập để xác định xem có nên thu thập tập dữ liệu nào từ Excel hay không. Khi bắt đầu tệp1 (chính) của tôi, tôi sẽ yêu cầu người dùng nhập 1 hoặc 2 và lưu trữ giá trị này vào "chế độ" biến được xác định trước.

'Mã cập nhật ở dưới cùng'

Nhưng ở trên sẽ khiến tôi lỗi về chế độ không được xác định.

Tôi đã tìm thấy một số câu trả lời trực tuyến, mà tôi đã đặt đầu vào chế độ vào tệp 2 và nhập tệp 2 vào tệp 1 và 3. Nó đang hoạt động, nhưng tôi không biết tại sao nó phải là một chức năng và những gì 'toàn cầu 'đang làm ở đây. Có một phương pháp chuyển biến tốt hơn cho tệp khác?

Mã hoạt động:

Tệp 1:

import file 2
import file 3

if file2.mode == '1':
     function2 from file2
     function3 from file3
elif file2.mode == '2':
     function2 from file2
     function3 from file3

Tệp 2:


def function():
    global mode
    mode = input(print("=>Input '1' for Eyebrow2D\n=>Input '2' for Eyebrow3D"))
function()

workfunction2():

Tệp 3:

if file2.mode == '1':
     do something
elif file2.mode == '2':
     do other thing
workfunction3():

Chỉnh sửa cập nhật một số mã sẽ khiến tôi lỗi

Tệp 1:

from file2 import *

mode = input(print("=>Input '1' for option1\n=>Input '2' for option2"))
if mode == '1':
    get_excel_data()
    print(shape)
elif mode == '2':
    get_excel_data()
    print(shape)

Tệp 2

from file1 import *
###I will get error here for mode not define
if mode == '1':
    data_xls = pd.read_excel('data.xlsx', sheet_name=2d)
    data_xls.to_csv('data.csv', encoding='utf-8')
    df = pd.read_csv(data.csv', header = 1, encoding = encoding)
elif mode == '2':
    data_xls = pd.read_excel('data.xlsx', sheet_name=3d)
    data_xls.to_csv('data2.csv', encoding='utf-8')
    df = pd.read_csv(data2.csv', header = 1, encoding = encoding)

shape = []
def get_excel_data():
    if mode == '1':
        for value in df["Shape"]:
            if type(value) == float:
                if math.isnan(value):
                    print("empty")
                    continue
            else:
                str(value).strip()
                excel_list.append(value)
    else:
        pass


Có lẽ tôi sẽ cần sử dụng File1.Mode trong Tệp 2?

Hướng dẫn python pass variable from one file to another - python chuyển biến từ tệp này sang tệp khác

13 năm trước

Nhiệt độ đầu vào trong Celcius trong hàm chính trong tệp 1st.py được truyền dưới dạng biến C.
I am trying to do a simple task in Python but I keep getting error. I have a string stored in a variable and a simple GUI with a button (in 1st.py) which will call another function in a separate file (twond.py) which will split that string and store and return that in 1st.py

Vì vậy, bạn gọi, trong chức năng chính của bạn

Chức năng thứ hai trong Tệp Twond.py sẽ chuyển đổi nó thành Fahrenheit và lưu trữ trong biến F.

Đây là nơi bạn phải tập trung ;-) Chức năng chính không quan tâm đến nơi hàm thứ hai (giả sử celciustofarenheit) lưu trữ các giá trị trung gian của nó. Nó chỉ quan tâm đến những gì được trả lại

Bây giờ điều này nên được chuyển trở lại chức năng chính trong tệp 1st.py. Vì vậy, khi tôi ra lệnh in (f) trong tệp chính, nó sẽ in đầu ra bằng Fahrenheit. Vì vậy, bây giờ tôi có thể sử dụng fahrenheit này và chơi với biến này.

#this is the main file 1st.py which has a string stored in variable s and a GUI function that calls the function
#
from Tkinter import *
import string, twond


class App:
    def __init__(self,master):
        frame = Frame(master.title("New Title"))
        frame.pack()
        self.bt=Button(frame, text='click', command=self.first)
        self.bt.grid(row=1, column=0)
    #global L    
    def first(self):
        s = 'this is a string'
        twond.second(str(s))  #this passes the variable s to the function second() in the file twond.py
        
        #print(L) 
        #if I uncomment this i get error message

root = Tk()

app = App(root)

root.mainloop()

#this is the file twond.py which splits the string s  and stores in variable L
#I am trying to make it to pass this variable L back to the main file 1st.py
import string

def second(s):
    global L
    L=string.split(s)
    
    print(s)
    
    print(L)

Hãy hoàn thành chức năng chính

Yea tôi nhận được những gì bạn đã làm ở đây.

Đây là những gì cuối cùng tôi muốn làm:

def second(s):
    str = string.split(s)
    return str

Đây là chức năng chính và chức năng thứ hai:

Bây giờ nó có thể nhận được biến được trả về như trong một mảng nhưng điều đó ổn vì sau đó tôi có thể tái tạo biến. Vì vậy, ví dụ trong 2 hộp nhập tôi đặt 30 C và phần trăm 5 đầu ra:

ở đâu

Đây là những gì tôi muốn bây giờ.

import string
global L

def second(s):
    global L
    L=string.split(s)
     print(s)
     print(L)

Cảm ơn rất nhiều chàng trai. Bạn là một huyền thoại.
twond.L

ở đâu

Nhiệt độ đầu vào trong Celcius trong hàm chính trong tệp 1st.py được truyền dưới dạng biến C.

Vì vậy, bạn gọi, trong chức năng chính của bạn

def Main():
    C=int(input("°C ?"))
    F=twond.CelciusToFarenheit(C) # Here, the returned value is stored in F
        # But this F has nothing to do with …

ở đâu

Đây là những gì tôi muốn bây giờ.

Hướng dẫn python pass variable from one file to another - python chuyển biến từ tệp này sang tệp khác

13 năm trước

Đây là những gì cuối cùng tôi muốn làm:

def second(s):
    str = string.split(s)
    return str

Đây là chức năng chính và chức năng thứ hai:

Bây giờ nó có thể nhận được biến được trả về như trong một mảng nhưng điều đó ổn vì sau đó tôi có thể tái tạo biến. Vì vậy, ví dụ trong 2 hộp nhập tôi đặt 30 C và phần trăm 5 đầu ra:

ở đâu

Hướng dẫn python pass variable from one file to another - python chuyển biến từ tệp này sang tệp khác

13 năm trước

Đây là những gì cuối cùng tôi muốn làm:

def second(s):
    str = string.split(s)
    return str

Đây là chức năng chính và chức năng thứ hai:

Bây giờ nó có thể nhận được biến được trả về như trong một mảng nhưng điều đó ổn vì sau đó tôi có thể tái tạo biến. Vì vậy, ví dụ trong 2 hộp nhập tôi đặt 30 C và phần trăm 5 đầu ra:

ở đâu
My aim is not just to print it in the main file. I am trying to access this variable from the main file 1st.py

Hướng dẫn python pass variable from one file to another - python chuyển biến từ tệp này sang tệp khác

13 năm trước

Đây là những gì tôi muốn bây giờ.

import string
global L

def second(s):
    global L
    L=string.split(s)
     print(s)
     print(L)

Cảm ơn rất nhiều chàng trai. Bạn là một huyền thoại.
twond.L

Hướng dẫn python pass variable from one file to another - python chuyển biến từ tệp này sang tệp khác

13 năm trước

Đây là những gì tôi muốn bây giờ.

import string
global L

def second(s):
    global L
    L=string.split(s)
     print(s)
     print(L)

Cảm ơn rất nhiều chàng trai. Bạn là một huyền thoại.
twond.L

Trân trọng,

Hướng dẫn python pass variable from one file to another - python chuyển biến từ tệp này sang tệp khác

JICE53 Đăng Whiz trong đào tạo 53 Posting Whiz in Training

13 năm trước

Đây là những gì cuối cùng tôi muốn làm:

def second(s):
    str = string.split(s)
    return str

Đây là chức năng chính và chức năng thứ hai:

Bây giờ nó có thể nhận được biến được trả về như trong một mảng nhưng điều đó ổn vì sau đó tôi có thể tái tạo biến. Vì vậy, ví dụ trong 2 hộp nhập tôi đặt 30 C và phần trăm 5 đầu ra:

ở đâu
print str(twond.second(string))
and it will work, no ?

Hướng dẫn python pass variable from one file to another - python chuyển biến từ tệp này sang tệp khác

13 năm trước

ở đâu
print str(twond.second(string))
and it will work, no ?

Đây là những gì tôi muốn bây giờ.

Nếu có một cách để chuyển các biến từ hàm được gọi là hàm gọi chính, điều đó sẽ giải quyết vấn đề.

Ví dụ: Function1 (Biến Pass A đến)-> Function2 (Biến vượt qua B đến)-> Chức năng1
Function1 (pass variable a to)--> Function2 (pass variable b to)-->Function1

trong đó hàm1 là hàm gọi chính trong tệp có tên firstfile.py function2 là hàm được gọi trong tệp có tên SecondFile.py
Function2 is the called function in file named secondfile.py

Được chỉnh sửa 13 năm trước bởi Romes87 vì: N/A

Hướng dẫn python pass variable from one file to another - python chuyển biến từ tệp này sang tệp khác

JICE53 Đăng Whiz trong đào tạo 53 Posting Whiz in Training

13 năm trước

OK, tôi đặt toàn bộ mã xuống: Đây là những gì tôi đã nói: Tôi đã viết 2 Files1st.py và Twond.py
Here is what I was saying :
I have written 2 files
1st.py and twond.py


def function():
    global mode
    mode = input(print("=>Input '1' for Eyebrow2D\n=>Input '2' for Eyebrow3D"))
function()

workfunction2():
4

def function():
    global mode
    mode = input(print("=>Input '1' for Eyebrow2D\n=>Input '2' for Eyebrow3D"))
function()

workfunction2():
5

Khi tôi nhấn nút, bảng điều khiển của tôi đang hiển thị:


def function():
    global mode
    mode = input(print("=>Input '1' for Eyebrow2D\n=>Input '2' for Eyebrow3D"))
function()

workfunction2():
6

Vì vậy, tôi không hiểu điều gì đang xảy ra với điều này. Tôi chắc chắn không có bất kỳ thuộc tính nào.

Được chỉnh sửa 13 năm trước bởi Jice vì: N/A

Hướng dẫn python pass variable from one file to another - python chuyển biến từ tệp này sang tệp khác

13 năm trước

OK, tôi đặt toàn bộ mã xuống: Đây là những gì tôi đã nói: Tôi đã viết 2 Files1st.py và Twond.py
Here is what I was saying :
I have written 2 files
1st.py and twond.py


def function():
    global mode
    mode = input(print("=>Input '1' for Eyebrow2D\n=>Input '2' for Eyebrow3D"))
function()

workfunction2():
4

def function():
    global mode
    mode = input(print("=>Input '1' for Eyebrow2D\n=>Input '2' for Eyebrow3D"))
function()

workfunction2():
5

Khi tôi nhấn nút, bảng điều khiển của tôi đang hiển thị:


def function():
    global mode
    mode = input(print("=>Input '1' for Eyebrow2D\n=>Input '2' for Eyebrow3D"))
function()

workfunction2():
6

Vì vậy, tôi không hiểu điều gì đang xảy ra với điều này. Tôi chắc chắn không có bất kỳ thuộc tính nào.

Được chỉnh sửa 13 năm trước bởi Jice vì: N/A
in

if file2.mode == '1':
     do something
elif file2.mode == '2':
     do other thing
workfunction3():
0

Yea điều này dường như đang hoạt động. Ý tôi là: trong
I am trying to avoid this and pass variable for the def second(s) to main function without any problem so when I have lots of variable in def second(...) I can easily pass them in the main function.

Nếu bạn chỉ định s.split () là một biến mới. Hàm chính sẽ gây ra lỗi nếu nó cố gắng nhận biến mới này. Tôi đang cố gắng tránh điều này và chuyển biến cho (các) chức năng chính của DEF mà không có vấn đề gì vì vậy khi tôi có nhiều biến trong DEF Second (...), tôi có thể dễ dàng vượt qua chúng trong chức năng chính.

Cảm ơn sự giúp đỡ của bạn, tôi sẽ kiểm tra lại và cho bạn biết nếu những gì bạn đề xuất làm việc cho tôi.

Hướng dẫn python pass variable from one file to another - python chuyển biến từ tệp này sang tệp khác

JICE53 Đăng Whiz trong đào tạo 53 Posting Whiz in Training

13 năm trước

OK, tôi đặt toàn bộ mã xuống: Đây là những gì tôi đã nói: Tôi đã viết 2 Files1st.py và Twond.py

Khi tôi nhấn nút, bảng điều khiển của tôi đang hiển thị:

if file2.mode == '1':
     do something
elif file2.mode == '2':
     do other thing
workfunction3():
1

Vì vậy, tôi không hiểu điều gì đang xảy ra với điều này. Tôi chắc chắn không có bất kỳ thuộc tính nào.

if file2.mode == '1':
     do something
elif file2.mode == '2':
     do other thing
workfunction3():
2

Được chỉnh sửa 13 năm trước bởi Jice vì: N/A

Yea điều này dường như đang hoạt động. Ý tôi là: trong
I won't develop this more here but you can google "callback" and you'll have informations about that.

Hướng dẫn python pass variable from one file to another - python chuyển biến từ tệp này sang tệp khác

13 năm trước

OK, tôi đặt toàn bộ mã xuống: Đây là những gì tôi đã nói: Tôi đã viết 2 Files1st.py và Twond.py
Another thing you can look at in gui design is "callback" : you pass a function as a parameter to another function so that you can call the first function from the second one... Very useful to avoid nested imports.

Khi tôi nhấn nút, bảng điều khiển của tôi đang hiển thị:
Let me make it clear with numbers rather than strings.

Vì vậy, tôi không hiểu điều gì đang xảy ra với điều này. Tôi chắc chắn không có bất kỳ thuộc tính nào.

Được chỉnh sửa 13 năm trước bởi Jice vì: N/A
Second function in file twond.py will convert that to Fahrenheit and store in variable F. Now this should be passed back of to main function in 1st.py file.
So when i command print(F) in the main file, it prints the output in Fahrenheit. So now I can use this Fahrenheit and play with this variable.

Yea điều này dường như đang hoạt động. Ý tôi là: trong
Input: C = 25 (in the entry box)
get F from the second function in twond.py where the equation to convert C to F is.
print (F) : 77
variable A = F+5%
print(A): 80.85

Nếu bạn chỉ định s.split () là một biến mới. Hàm chính sẽ gây ra lỗi nếu nó cố gắng nhận biến mới này. Tôi đang cố gắng tránh điều này và chuyển biến cho (các) chức năng chính của DEF mà không có vấn đề gì vì vậy khi tôi có nhiều biến trong DEF Second (...), tôi có thể dễ dàng vượt qua chúng trong chức năng chính.

Cảm ơn sự giúp đỡ của bạn, tôi sẽ kiểm tra lại và cho bạn biết nếu những gì bạn đề xuất làm việc cho tôi.

Hướng dẫn python pass variable from one file to another - python chuyển biến từ tệp này sang tệp khác

JICE53 Đăng Whiz trong đào tạo 53 Posting Whiz in Training

13 năm trước

OK, tôi đặt toàn bộ mã xuống: Đây là những gì tôi đã nói: Tôi đã viết 2 Files1st.py và Twond.py

Khi tôi nhấn nút, bảng điều khiển của tôi đang hiển thị:

if file2.mode == '1':
     do something
elif file2.mode == '2':
     do other thing
workfunction3():
3

Vì vậy, tôi không hiểu điều gì đang xảy ra với điều này. Tôi chắc chắn không có bất kỳ thuộc tính nào.

Được chỉnh sửa 13 năm trước bởi Jice vì: N/A
The Main function doesn't care about where the second function (let's say CelciusToFarenheit) stores its intermediates values.
It only cares about what is returned

if file2.mode == '1':
     do something
elif file2.mode == '2':
     do other thing
workfunction3():
4

Yea điều này dường như đang hoạt động. Ý tôi là: trong
So when i command print(F) in the main file, it prints the output in Fahrenheit. So now I can use this Fahrenheit and play with this variable.

Hãy hoàn thành chức năng chính

if file2.mode == '1':
     do something
elif file2.mode == '2':
     do other thing
workfunction3():
5

Hướng dẫn python pass variable from one file to another - python chuyển biến từ tệp này sang tệp khác

13 năm trước

Vì vậy, bạn gọi, trong chức năng chính của bạn

if file2.mode == '1':
     do something
elif file2.mode == '2':
     do other thing
workfunction3():
3

Yea tôi nhận được những gì bạn đã làm ở đây.

Đây là nơi bạn phải tập trung ;-) Chức năng chính không quan tâm đến nơi hàm thứ hai (giả sử celciustofarenheit) lưu trữ các giá trị trung gian của nó.Nó chỉ quan tâm đến những gì được trả lại
The Main function doesn't care about where the second function (let's say CelciusToFarenheit) stores its intermediates values.
It only cares about what is returned

if file2.mode == '1':
     do something
elif file2.mode == '2':
     do other thing
workfunction3():
4

Hãy hoàn thành chức năng chính

if file2.mode == '1':
     do something
elif file2.mode == '2':
     do other thing
workfunction3():
5

Đây là những gì cuối cùng tôi muốn làm:

if file2.mode == '1':
     do something
elif file2.mode == '2':
     do other thing
workfunction3():
9

Đây là chức năng chính và chức năng thứ hai:
And the second function:

from file2 import *

mode = input(print("=>Input '1' for option1\n=>Input '2' for option2"))
if mode == '1':
    get_excel_data()
    print(shape)
elif mode == '2':
    get_excel_data()
    print(shape)
0

Bây giờ nó có thể nhận được biến được trả về như trong một mảng nhưng điều đó ổn vì sau đó tôi có thể tái tạo biến.Vì vậy, ví dụ trong 2 hộp nhập tôi đặt 30 C và phần trăm 5 đầu ra:
So fro example in the 2 entry boxes I put 30 C and percentage 5
the output:

from file2 import *

mode = input(print("=>Input '1' for option1\n=>Input '2' for option2"))
if mode == '1':
    get_excel_data()
    print(shape)
elif mode == '2':
    get_excel_data()
    print(shape)
1

ở đâu

from file2 import *

mode = input(print("=>Input '1' for option1\n=>Input '2' for option2"))
if mode == '1':
    get_excel_data()
    print(shape)
elif mode == '2':
    get_excel_data()
    print(shape)
2

Đây là những gì tôi muốn bây giờ.

Cảm ơn rất nhiều chàng trai.Bạn là một huyền thoại.

Trân trọng,

Trả lời chủ đề này

Là một phần của cộng đồng Daniweb

Chúng tôi là một cộng đồng thân thiện, tập trung vào ngành của các nhà phát triển, các chuyên gia CNTT, nhà tiếp thị kỹ thuật số và những người đam mê công nghệ gặp gỡ, học tập và chia sẻ kiến thức.