2017-05-05 91 views
0

由於某些原因,我無法將變量從一個Python文件傳遞到另一個文件。請參閱下面的文件。變量不會在Python腳本之間傳遞

pullgps.py

from lenny1 import * 
import time 

while (1): 

    print lenny1.lat 
    print lenny1.lon 
    print ">>>>>>>>>>>>>>>>>>>>>>>>>>>" 
    time.sleep(6) 

lenny1.py

import gps 

# Listen on port 2947 (gpsd) of localhost 
session = gps.gps("localhost", "2947") 
session.stream(gps.WATCH_ENABLE | gps.WATCH_NEWSTYLE) 

while True: 
    try: 
     report = session.next() 
     # Wait for a 'TPV' report and display the current time 
     # To see all report data, uncomment the line below 
     # print report 
     if report['class'] == 'TPV': 
      if hasattr(report, 'lat'): 
        lat = report.lat ### export to pullgps 
      if hasattr(report, 'lon'): 
        lon = report.lon ### export to pullgps 
    except KeyError: 
     pass 
    except KeyboardInterrupt: 
     quit() 
    except StopIteration: 
     session = None 
     print "GPSD has terminated" 

lenny.py當我打印report.lonreport.lon工作在自己的罰款。只是無法將變量導出到pullgps.py。它應該很簡單,但由於某些原因,變量不會通過。謝謝!

+2

我想你應該閱讀[this](https://docs.python.org/3/tutorial/modules.html)關於import語句。 – user3591723

回答

0

您正在使用from lenny1 import *,它將所有內容從lenny1.py導入到全局名稱空間中。不僅如此,在第一次導入時,您實際上正在運行lenny1.py中的所有內容,其中包含可能會阻止的while循環。這是非常糟糕的代碼練習。不過,我認爲您遇到的問題是您在使用加星標導入時引用了lenny1.lonlenny1.lat。只要打印lonlat並且原則上應該「工作」,只要循環終止。

+0

謝謝,你提到過。它只是掛起。更改爲導入lenny1並刪除了while循環。它仍然掛起。 – hahobson

+0

哪個while循環刪除了? lenny1.py中的一個看起來會永久阻塞。 – Evey

+0

另外,你打算同時運行這兩個進程嗎?因爲這不是這樣做的,正如user3591723指出的那樣(現在評論已刪除)。 – Evey