簡體   English   中英

如何在Python中的另一個文件中調用函數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM