我想在Unix环境中使用Python脚本创建空文件.可以看到提到实现相同的不同方式.一个人比另一个人有什么好处/陷阱.
os.system('touch abc')
open('abc','a').close()
open('abc','a')
subprocess.call(['touch','abc'])
Run Code Online (Sandbox Code Playgroud)
嗯,首先,依赖的touch是不可携带的.例如,如果没有安装CygWin,GNUWin32或其他提供touch实用程序的软件包,它们将无法在标准Windows下运行.
它们还涉及创建一个单独的工作流程,在这种情况下完全没有必要.
在这四个中,我可能会使用,open('abc','a').close()如果意图是尝试只是创建文件,如果它不存在.在我看来,这使得意图明确.
但是,如果你想创建一个空文件,我可能会使用w写模式而不是a附加模式.
此外,您可能还希望捕获异常,例如,如果您无法实际创建该文件.
TLDR:使用
open('abc','a').close()
Run Code Online (Sandbox Code Playgroud)
(或者如果意图是截断文件(如果它已经存在)'w','a'则代替.
调用一个单独的进程来执行Python可以自己做的事情是浪费的,并且不可移植到外部命令不可用的平台.(另外,os.system使用两个进程 - 一个用于解析命令行的shell - 并且正在被弃用以支持subprocess.)
完成后不关闭打开的文件句柄是不好的做法,并且可能导致较大程序中的资源耗尽(如果打开越来越多的文件并且从不关闭它们,则会耗尽文件句柄).
| 归档时间: |
|
| 查看次数: |
6492 次 |
| 最近记录: |