python:将字符串而不是file作为函数参数传递

时间:2012-04-02 01:17:10

标签: python

我是python的初学者,我需要使用一些第三方功能,它基本上有一个输入 - 硬盘上的文件名。该函数解析文件然后进行处理。

我在我的代码中生成文件内容(它是我从列表生成的CSV文件),并且想要跳过实际的文件创建。有没有什么方法可以实现这一点并“破解”第三方函数接受我的字符串而不创建文件?

经过一些谷歌搜索后,我找到了StringIO,并在其中创建了一个文件对象,现在我不得不将这个对象传递给一个函数(同样,它不接受文件对象而是文件名)。

3 个答案:

答案 0 :(得分:7)

看起来您需要将数据写入文件,然后将该文件的名称传递给第三方库。您可能需要考虑使用tempfile模块以安全且简单的方式创建文件。

答案 1 :(得分:4)

如果需要文件名,那么您将不得不创建一个文件。 (这是图书馆创作者的糟糕设计。)

答案 2 :(得分:-2)

您应该查看I / O的python文档,如下所示: http://docs.python.org/tutorial/inputoutput.html

Python通过打开文件来处理文件,没有“创建”的额外文件。然后打开文件有几个方法可以在它们上完成,你可以用它们来创建你想要的输出;虽然我不完全确定我理解你的措辞。我明白了,你想打开一个文件,用它的内容做一些东西,然后创建一些类型的字符串,对吧?如果这是正确的,那么你很幸运,因为它很容易做到。

从文件传递到python的逗号分隔值非常容易解析为python友好格式,例如列表,元组和字典。

正如您所说,您需要一个输入文件名称的函数,查找文件,读取文件并完成一些操作而不创建额外文件。好吧,为此,您的代码将如下所示:

def file_open(filename):
    new_dictionary = {}
    f = open(/directory/filename, r) ##The second param is mode, here readable
    for line in f: ##iterating through each comma seperated value
        key,value = line.split(',') ##set the first entry before comma to key then val
        new_dictionary[key] = value ##set the new_dictionary key to value
    return new_dictionary ##spit that newly assembled dictionary back to us
    f.close() ##Now close the file.

如您所见,此过程中没有创建其他文件。我们只需在硬盘上打开文件,进行一些解析来创建我们的字典,然后返回字典以供使用。要将某些内容设置为它输出的字典,只需将变量设置为该函数即可。只需确保从硬盘驱动器的根目录正确设置目录。

CSV_dictionary = file_open(my_file) ##This sets CSV with all the info.

我希望这很有帮助,如果我没有得到你的问题,只需回答,我会尽力帮助你。

-Joseph