无法将输出重定向到ipython ide中的文件

时间:2017-09-04 13:36:31

标签: linux ipython

我无法将dir(modulename)的输出重定向到ipython ide中的文件。请让我知道如何做到这一点。它适用于ls和其他linux命令。

 In [45]: os.system('dir(socket) > socket1.txt')
 File Not Found
 Out[45]: 1

 In [46]: os.system('cat socket1.txt')
 Volume in drive C is Local Disk
 Volume Serial Number is D649-B68C

 Directory of C:\Users\aryan\PycharmProjects\classes

 Out[46]: 0

In [47]: dir (socket)
Out[47]:
['AF_APPLETALK',

1 个答案:

答案 0 :(得分:1)

你在这里混合两个世界。

一个是Python世界,你可以在其中调用Python函数(如dir());在这个世界中,重定向只是使用>或类似的东西而不是

另一个世界是Shell世界,你可以在其中调用shell命令行(如cat socket1.txt);在这个世界中,可以在命令之后使用简单的>符号(连同文件名)来完成重定向。使用system()调用(或subprocess模块中的其他调用)输入此世界。

您现在正在做的是使用system()进入Shell世界,然后在这个世界中执行dir()(这不起作用)。但重定向将起作用,因此您将创建一个名为socket1.txt的文件(可能为空)。

重定向Python调用的输出通常不是那么容易做到的。但是,您的情况很特殊:您只想将Python值转储到文件中。这很简单:

with open('socket1.txt', 'w') as out_file:
  out_file.write(str(dir(socket)))