我无法将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',
答案 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)))