python os.system(command),这样执行的command命令,和主程序是异步的吗

尚未执行完成的情况下,下面的程序不会继续操作。

看下面的例子即可:

>>> import os
>>> def test():
... print '1111'
... os.system('ping 127.0.0.1')
... print '2222'
... os.system('ping 127.0.0.1')
... print '3333'
...
>>> test()
1111

Pinging 127.0.0.1 with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64

Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
2222

Pinging 127.0.0.1 with 32 bytes of data:
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64
Reply from 127.0.0.1: bytes=32 time<1ms TTL=64

Ping statistics for 127.0.0.1:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 0ms, Maximum = 0ms, Average = 0ms
3333
>>>

② python--怎么查看模块OS里listdir()函数的源代码,也就是怎么定义istdir()的代码

在 python 官网下载 Gzipped source tar ball, 解压缩后, 会发现 Lib/os.py 文件这行代码
from posix import *
可是没有文件叫 posix.py 啊, 到底在那 ? 其实 posix mole 是 builtin 的其中一分子,如下示范:

>>> import sys
>>> print sys.builtin_mole_names
(*__builtin__*, *__main__*, *_ast*, *_codecs*, *_sre*, *_symtable*, *_warnings*, *_weakref*, *errno*, *exceptions*, *gc*, *imp*, *marshal*, *posix*, *pwd*, *signal*, *sys*, *thread*, *zipimport*)
>>>

所以要去 Moles 目录查找 c 代码, 你会看见 posixmole.c, 打开它看见这行代码:

{"listdir", posix_listdir, METH_VARARGS, posix_listdir__doc__},

再寻找上面所得到的 posix_listdir method, 可以找到 listdir 源代码:

static PyObject *
posix_listdir(PyObject *self, PyObject *args)
{
/* XXX Should redo this putting the (now four) versions of opendir
in separate files instead of having them all here... */
#if defined(MS_WINDOWS) && !defined(HAVE_OPENDIR)

PyObject *d, *v;
HANDLE hFindFile;
BOOL result;

③ python os.listdir('.')是什么意思

'.'是指你执行命令时的路径。
比如你在a目录执行C:\a>python c:/b/c.py文件,c文件在b目录下。'.'是把你a目录下的文件目录列出来而不是b目录下的。
import os
print('hahaha==',[d for d in os.listdir('.')])
你自己试一下就知道了。

④ python os 不能输出中文 window idle版本 在线等

printos.path.join(path,filename).decode('gbk')

⑤ python中for filelist in os.listdir(path) 报WindowsError: [Error 234] :

我这边试了一下,基本上所有的文件都能成功显示,包括名字特长的和包含中文字符的,错误信息能多贴点么

⑥ python 中os主要实现什么功能

将data_hoted(数组形式)写入文本
num_rows, num_cols = shape(data_hoted)
print '写入文本'
f = open("G:/one_hoted.txt", "w")
for i in range(num_rows):
print >>f, data_hoted[i,:]
f.close()
print '写入文本完成'

⑦ 想在python脚本里面source .profile,调用os.system后在当前运行的脚本里环境变量没有变呢求解决方法。

因为你调用os.system执行source .profile命令是在子进程中进行的,不能改变python当前进程的环境变量。

你应该修改os.environ。
一个mapping对象表示环境。例如,os.environ['HOME'] ,表示的你自己home文件夹的路径(某些平台支持,windows不支持)
,它与C中的getenv("HOME")一致。

⑧ python os.putenv安全吗

>>>> os.getenv("PATH")
> '/usr/joebin:/usr/local/bin:/usr/bin:/bin:/usr/games/bin:/usr/sbin:/sbin:~/bin'
>>>> os.putenv("PATH", "/")
>>>> os.getenv("PATH")
> '/usr/joebin:/usr/local/bin:/usr/bin:/bin:/usr/games/bin:/usr/sbin:/sbin:~/bin'
>
>
>>>> os.getenv("FOO")
>>>> os.putenv("FOO", "BAR")
>>>> os.getenv("FOO")
从上述我们不难看出putenv() 无效。
查看帮助,搜索了下:
Quoting (retyping) from the getenv docs, "...however, calls to putenv()
don't update os.environ, so it is actually preferable to assign to items
of os.environ."
调用putenv()无法更新os.environ

As to why, I'm not at all sure. Only that many environments don't
support putenv(). But why that should stop it working in the obvious
way ? No idea.

os.environ is not an ordinary dict, it's a "mapping object". And among
other things, when you modify os.environ, Python will call putenv.
Quoting from the os.environ docs, "If the platform supports the putenv()
function, this mapping may be used to modify the environment. putenv()
will be called automatically wehn the mapping is modified."
#当我们更新os.environ的时候,会自动调用putenv()

In other words, you shouldn't use putenv(), but instead modify os.environ.
#因此我们可以不用putenv了,以更新os.environ来实现调用putenv

⑨ python 的os.listdir(filepath) 什么意思

In [13]: import os

In [14]: os.listdir('图片')
Out[14]:
['中华田园犬.jpg',
'2019-08-25 14-34-30 的屏幕截图.png',
'2019-07-30 09-02-00 的屏幕截图.png',
'2019-07-12 07-17-12 的屏幕截图.png',
'2019-07-29 09-49-59 的屏幕截图.png',
'2019-08-03 17-22-45 的屏幕截图.png',
'2019-09-22 13-50-52 的屏幕截图.png',
'2019-08-17 13-39-49 的屏幕截图.png',
'2019-09-14 10-37-03 的屏幕截图.png',
'2019-07-12 07-17-16 的屏幕截图.png',
'2019-08-03 11-10-41 的屏幕截图.png',
'2019-08-17 14-00-00 的屏幕截图.png',
'2020-03-24 10-58-28 的屏幕截图.png',
'2019-08-24 15-47-16 的屏幕截图.png']

以上为用ipython的尝试结果,说明,这个是用来展示目标文件夹里面情况的

⑩ python os和sys模块的区别

首先,我对 os.exit 这个用法表示惊讶,于是亲自尝试了一下:
>>> print sys.version
2.7.3 (default, Jul 24 2013, 00:50:10)
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)]
>>> import os
>>> os.exit
Traceback (most recent call last):
File "<string>", line 1, in <mole>
AttributeError: 'mole' object has no attribute 'exit'
>>>
WTF?os.exit 根本就不存在呀!如果这个用法真的存在,请在评论区里指正。谢谢
比如说,os.path.split、os.system等,这些都是在和OS交互。值得注意的,os.fork只在*nix上可用,这也说明了「os模块负责与操作系统的交互」。
至于sys呢,sys.exit让解释器停止你的程序、sys.version获得python解释器(而非操作系统)的版本号、sys.argv获得你的程序的参数……所以说sys是与解释器高度相关的。
综上,题主你“os连接操作系统、sys连接解释器”的说法很对。我不知道题主哪里不能理解它们的区别,你可以在评论区说出来。
<del>【本段存在重大技术错误已经宣布召回】至于题主说的path,我个人理解是这样的:
你说path和os肯定有关系吧,path和python解释器也有关系呀:你的程序能import哪些模块就取决于path。guido想了半天,实在不知道应该把path放在os里还是sys里,于是干脆在os和sys里都放了一个path。</del>
刚意识到自己脑残了,os.path和sys.path明明是完全不同的两个东西啊!sys.path是人民群众喜闻乐见的PATH环境变量,os.path是一个mole,提供split、join、basename等“处理目录、文件名”的工具。