![](/img/trans.png)
[英]Python 3: How to call function from another file and pass arguments to that function ?
[英]How to call a function in another file in Python?
我試圖在python的另一個文件中的一個文件中調用某些函數,但是每當執行該操作時,我都會不斷收到錯誤消息。 這是我第一個文件myfile.py的代碼
def readfile('C:\Users\kprab\Documents\python\data.asc'):
# to read in the data from a file
import pylab
from numpy import genfromtxt
# get data
data = genfromtxt('C:\Users\kprab\Documents\python\data.asc', delimiter=',')
print data
def proj(data):
# to create an image from data
import numpy
from matplotlib import pyplot as plt
x = data
plt.imshow(x, cmap='gray', interpolation='nearest', vmin=0, vmax=255)
plt.savefig('text.png')
plt.show()
然后我試圖在另一個文件中使用不同的數據調用這些函數。 該代碼如下所示:
import myfile
a = myfile.readfile('C:\Users\kprab\Documents\python\HPOPUP2_201507071256_1')
print a
b = myfile.proj(a)
print b
我得到的錯誤是
def readfile('C:\Users\kprab\Documents\python\data.asc'):
^
SyntaxError: invalid syntax
任何幫助表示贊賞。 謝謝!
您弄亂了函數定義。
def readfile('C:\Users\kprab\Documents\python\data.asc'):
# to read in the data from a file
import pylab
from numpy import genfromtxt
# get data
data = genfromtxt('C:\Users\kprab\Documents\python\data.asc', delimiter=',')
一定是這樣的
def readfile(filename='C:\Users\kprab\Documents\python\data.asc'):
import pylab
from numpy import genfromtext
data = genfromtxt(filename)
請注意,我使用默認值'C:\\Users\\kprab\\Documents\\python\\data.asc'
定義了一個函數參數filename
,並且稍后在函數中使用此filename
。
您對readfile()的參數必須有一個名稱。
def readfile(foo='C:\Users\kprab\Documents\python\data.asc'):
bla bla
一些解釋:根據您的評論,我認為您需要對功能進行一些說明。 函數是您或任何人都可以重復使用的存儲過程。
函數的一個示例是用於將圖像保存到程序中的savefig()函數。 如您所見,此函數的創建者既不知道您也不知道您的文件名,她甚至不知道您將如何使用它。 這個概念稱為抽象 。她唯一了解的是,要保存圖像的程序將提供圖像對象和文件名。 給定這兩個參數,函數將執行應做的工作,保存!
因此,在您的情況下,您的函數需要一個文件名,您可以使用一個代表該文件名的變量來實現該目的-為了使其能夠動態工作,請將其命名為file_name。 因此,任何想要使用您的函數的人都將使用文件名來調用它,對於您的功能來說,它僅僅是一個文件名,因此, 在函數中任何您想要操縱或使用傳遞的文件名的地方,都可以說file_name 。
您能否澄清一下:在myfile中 ,您是否將函數定義為:
def readfile('C:\\Users\\kprab\\Documents\\python\\data.asc')
嗎?
因為如果是這樣,這就是為什么您遇到語法錯誤。 您正在創建一個傳遞已給定值的函數,而不是傳遞函數可以使用的參數。 嘗試: import pylab from numpy import genfromtxt def readfile(file_path='C:\\Users\\kprab\\Documents\\python\\data.asc'): data = genfromtxt(file_path, delimiter=',') print data return data
然后,您可以在實際代碼中輸入所需的任何文件路徑。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.