小编cin*_*nny的帖子

列出python中的目录树结构?

我知道我们可以使用os.walk()列出目录中的所有子目录或所有文件.但是,我想列出完整的目录树内容:

  • 子目录1:
    • FILE11
    • file12
    • 子目录11:
      • file111
      • file112
  • 子目录2:
    • file21
    • 子目录21
    • 子目录22
      • 子子目录221
        • 文件2211

如何在Python中实现这一目标?

python traversal directory-structure

84
推荐指数
9
解决办法
9万
查看次数

Python subprocess.call有效,但subprocess.check_call不起作用-有什么区别?

我正在使用Python 2.7

我正在尝试从Python运行StatTransfer程序。

当我尝试:

tempname = os.path.abspath('./text.txt')
TEMPFILE = open(tempname, 'wb')
try:
    subprocess.check_call('ST convert.stc', shell = True, stdout = TEMPFILE, stderr = TEMPFILE)
except:
    raise CritError(messages.crit_error_bad_command)
Run Code Online (Sandbox Code Playgroud)

它失败(CritError是用户定义的)。

追溯不会告诉我任何有用的信息:

Traceback (most recent call last):
  File "C:\...\py\run_program.py", line 181, in run_stcmd
    run.execute_run(current_directory, posix_command, nt_command)
  File "C:\...\py\private\runprogramdirective.py", line 99, in execute_run
    raise CritError(messages.crit_error_bad_command)
CritError: 'ERROR! Cannot execute command'
Run Code Online (Sandbox Code Playgroud)

但是将相关行更改为:

subprocess.call('ST convert.stc', shell = True, stdout = TEMPFILE, stderr = TEMPFILE)
Run Code Online (Sandbox Code Playgroud)

它运行成功。

有趣的是,在两种情况下,我的TEMPFILE都显示相同的内容:

|/-|/-|/-|/-|/- |/-|/-|/-|/-|/- Stat/Transfer - Command Processor (c) 1986-2011 Circle         Systems, Inc. …
Run Code Online (Sandbox Code Playgroud)

python subprocess

3
推荐指数
1
解决办法
1万
查看次数

对于优化收敛而言,更好的初始猜测可能更糟

我有一个非常复杂的模型,需要解决许多参数。尽管模型复杂,但每一步的函数形式都不是不规则的。

我看到一些带有起始值的奇怪行为。如果我从标准的随机值(全为 0)开始,求解器会在 673 秒内收敛于“找到局部最优解”,0 次 CG 迭代。

如果我从我知道接近解的值开始,求解器会收敛于“原始可行解估计无法改进。”,493 次 CG 迭代,1718 秒。

请注意,在这两种情况下,最终值相同(或非常相似)。

2个问题:

  • 共轭梯度迭代的确切次数是多少,例如求解器何时需要计算共轭梯度?在 1 种情况下,我看到 0 次 CG 迭代,而在另一种情况下,我看到 493 次 CG 迭代。这意味着什么?(请注意,我确实知道 CG 方法是什么,只是不知道为什么在一种情况下这里 0 有巨大差异。)
  • 什么是所有可能的解释是“好”的初始值可以显著放缓的最优化收敛?

optimization

2
推荐指数
2
解决办法
2021
查看次数

在Python中os.walk()的奇怪行为?

这是原始代码块及其结果:

码:

if os.path.isdir(top):
    for root, dirs, files in os.walk(top, topdown = True):
        for dirname in dirs:
            print 'Dirname = ', os.path.join(root, dirname)
Run Code Online (Sandbox Code Playgroud)

结果:

Dirname = ../output/.svn
Dirname = ../output/a random folder
Dirname = ../output/a random folder - copy
Dirname = ../output/.svn\pristine
Dirname = ../output/.svn\temp
Dirname = ../output/.svn\pristine\04
Dirname = ../output/.svn\pristine\59
Dirname = ../output/a random folder\another one inside
Dirname = ../output/a random folder\another one inside - Copy
Dirname = ../output/a random folder\another one inside - Copy (2)
Run Code Online (Sandbox Code Playgroud)

现在我想忽略所有隐藏的文件夹和子文件夹.这是修改后的代码及其结果:

码:

if …
Run Code Online (Sandbox Code Playgroud)

python os.walk

0
推荐指数
1
解决办法
1746
查看次数