Python-PowerShell-(过滤器\包含)未按预期工作

问题描述 投票:0回答:1

请帮助理解我的错误在哪里。

为了测试我创建的:

  1. test_INCORRECT_FOLDER 包含 1 个 excel 文件,不应显示
  2. test_folder,里面有 2 个 excel 文件(1.xlsx 和 2.xlsx)
  3. sub_folder 在 test_folder 内,其中有 2 个 excel 文件(3.xlsx 和 4.xlsx)。

使用shell命令我们可以获取内容 No any issues with powershell itself. everything as expected

但是当我尝试将它与 Python 一起使用时,它没有按预期工作。

Python 代码。超级简单

顺便说一句,在代码运行期间test_INCORRECT_FOLDER将在powershell终端会话中打开

首先是结构: FILE Structure (UPDATED)

Python code and results

如您所见,我在 python 中使用了 powershell 中的相同命令。 但我得到了完全不同的结果

在Python中,powershell扫描并过滤当前文件夹中的文件。

预期结果: 通过正确的路径正确过滤excel文件test_folder

# Run powershell

import subprocess
import os


os.system("cls")
#Test 1 -----> Static path in powershell
    
print(f"TEST 1 static path in powershell'\n {'*' * 90} \n RESULT:")
subprocess.run(["powershell", "-Command","Get-ChildItem  C:\\test_folder -Filter *.xlsx -Recurse | % { $_.FullName }"])
    
    
print("-------------------------")
#Test 2 ----> Static path 
test_folder_static = 'C:\\test_folder'
print(f"TEST 2 static path in script \n {'*' * 90} \n RESULT:")
subprocess.run(["powershell", "-Command","Get-ChildItem $test_folder_static -Filter *.xlsx -Recurse | % { $_.FullName }"])
python powershell filter include
1个回答
0
投票

在第二个系统调用中,字符串插值发生在 python 中,而不是 powershell 中。看一下this,将最后一行代码更改为:

subprocess.run(["powershell", "-Command", f"Get-ChildItem '{test_folder_static}' -Filter *.xlsx -Recurse | % {$_.FullName }"])
© www.soinside.com 2019 - 2024. All rights reserved.