首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >`os.system`无法找到由“`with”创建并由“`with”读取的文件

`os.system`无法找到由“`with”创建并由“`with”读取的文件
EN

Stack Overflow用户
提问于 2021-08-09 22:13:51
回答 1查看 245关注 0票数 1

在运行在Windows 10中的Python3程序中,os.system()无法找到使用with openAPPDATA目录中创建的文件,即使该文件可以被后续的with open成功读取。

关于这个OP的问题:

在下面的Python3代码中需要更改哪些特定的语法才能成功地在APPDATA目录中创建一个文件,该文件可以由Windows10Explorer UI的用户直观地找到,也可以通过下面的os.system()命令以编程方式找到,这是失败的?

当前代码:

下面的代码是我们目前正在尝试的:

代码语言:javascript
代码运行次数:0
运行
复制
print(os.getenv('APPDATA'))
terraformRC = os.path.join( os.getenv('APPDATA'), "terraform.rc")
print("terraformRC is: ", terraformRC)
print("About to write terraformRC. ")
try: 
  with open(terraformRC, 'w') as f:
    f.write('provider_installation {\n')
    f.write('  filesystem_mirror {\n')
    f.write('    path    = "' + providersPath + '"\n')
    f.write('    include = ["*/*"]\n')
    f.write('  }\n')
    f.write('\n')
    f.write('  direct {\n')
    f.write('    exclude = ["*/*"]\n')
    f.write('  }\n')
    f.write('}\n')
except (Exception) as e:
  print(e)

print("About to read the terraformRC we just wrote.  ")
with open(terraformRC, 'r') as lines:
  for line in lines:
    print(line)

print("About to disable settings for folder so that the terraformRC file can be unhidden.  ")
removeSettingsCmd = 'attrib -h -s ' + terraformRC
os.system(removeSettingsCmd)

当前失败结果:

当我们从Windows调用上述Python3代码时,Windows会打印以下输出。

代码语言:javascript
代码运行次数:0
运行
复制
C:\path\to\AppData\Roaming
terraformRC is:  C:\path\to\AppData\Roaming\terraform.rc
About to write terraformRC.
About to read the terraformRC we just wrote.
provider_installation {
  filesystem_mirror {
    path    = "C:\path\to\dependencies\terraform\providers"
    include = ["*/*"]
  }
  direct {
    exclude = ["*/*"]
  }
}

About to disable settings for folder so that the terraformRC file can be unhidden.
File not found - C:\path\to\AppData\Roaming\terraform.rc

问题:

从上面的输出可以看出,Python似乎成功地找到了APPDATA目录。然后Python似乎成功地将terraformRC文件写入APPDATA。然后Python似乎成功地读取了它似乎已经写入APPDATAAPPDATA文件。

问题是,os.system(removeSettingsCmd)随后失败了,其中有一条消息File not found - C:\path\to\AppData\Roaming\terraform.rc声明它无法在正确的位置找到terraformRC文件。而且,在使用Windows在terraformRC中查找APPDATA文件时,人类用户无法查看它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-12 05:58:46

您似乎已经从Microsoft安装了Python。存储应用程序是通用Windows平台()应用程序,并将AppData存储在每个用户的基础上重定向到本地应用程序(如attrib )所不知道的特定用户的特定区域。有关更多信息,请参见UWP -存储和检索设置和其他应用程序数据

我建议卸载Python的UWP版本,并从python.org安装一个正式的本机二进制文件,这将如您所期望的那样工作。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68719108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档