可能重复:
python中的mkdir -p功能
说我想制作一个文件:
filename = "/foo/bar/baz.txt"
with open(filename, "w") as f:
f.write("FOOBAR")
Run Code Online (Sandbox Code Playgroud)
这给了一个IOError
,因为/foo/bar
不存在.
什么是自动生成这些目录的最pythonic方式?难道真的要我明确调用os.path.exists
并os.mkdir
在每个单独的一个(即/富,则/富/条)?
假设我定义了一个数组:
$a = Array();
$a[0] = 1;
$a['0'] = 2;
$a['0a'] = 3;
print_r($a);
Run Code Online (Sandbox Code Playgroud)
输出是相当可观的.我假设在内部存在某种strval()
或某种情况intval()
以允许覆盖该值.
Array
(
[0] => 2
[0a] => 3
)
Run Code Online (Sandbox Code Playgroud)
但这让我感到困惑.
foreach($a as $k => $v) {
print(gettype($k) . "\n");
}
Run Code Online (Sandbox Code Playgroud)
这给了我:
integer
string
Run Code Online (Sandbox Code Playgroud)
在使用Array键时,PHP内部如何进行这些类型转换?即,如何根据文档确定密钥是"有效十进制整数" ?此外,is_int
不适用于字符串.
我试图在Python中创建一个2D列表.我找到了两种可能性.
def cArray(size):
c = [[0. for i in range(size)] for j in range(size)]
return c
def npArray(size):
np = numpy.zeros((size,size))
return np
Run Code Online (Sandbox Code Playgroud)
现在这两个函数都给出了正确的答案.这里的问题在于性能.我使用timeit运行了这两个,这是我的结果:
list size is 5000
number of times run is 5
cArray average time: 3.73241295815
npArray average time: 0.210782241821
Run Code Online (Sandbox Code Playgroud)
很明显,我想避免使用第一个解决方案,特别是因为这将适用于高达100k的大小.但是,我也不想使用太多的依赖项.有没有办法让我有效地创建一个2D数组,没有numpy?它不需要完全达到速度,只要它不慢17倍.