如何在Python中调用另一个文件中的函数?

时间:2017-06-28 14:56:26

标签: 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

感谢任何帮助。谢谢!

3 个答案:

答案 0 :(得分:2)

你弄乱了函数定义。

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)

请注意,我使用默认值filename定义了一个函数参数'C:\Users\kprab\Documents\python\data.asc',稍后我会在函数中使用此filename

答案 1 :(得分:1)

你对readfile()的参数必须有一个名字。

def readfile(foo='C:\Users\kprab\Documents\python\data.asc'):
    bla bla

一些解释: 根据你的评论,我认为你需要一些关于功能的解释。 函数是您或任何人可以重复使用的存储过程。

功能的一个示例是用于在程序中保存图像的 savefig()功能。正如你所看到的,这个函数的创建者并不知道你和你的文件名,她甚至不知道你将如何处理它。这个概念叫做抽象她唯一知道的是想要保存图像的程序会给出一个图像对象和一个文件名。鉴于这两个参数,该函数将执行它应该执行的操作,保存!

因此,在您的情况下,您的函数需要一个文件名,您可以使用表示该文件名的变量来执行该操作,以便它可以动态工作,并将其称为file_name。所以任何想要使用你的函数的人都会用文件名来调用它,为了你的结果,它只是一个文件名,所以当你想要操作或使用传递的文件名时,你的函数内 < strong>你说file_name 。

答案 2 :(得分:1)

您能否澄清一下:在您的 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

然后,您可以在实际代码中提供您想要的任何文件路径。