繁体   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