python - shutil.copy 是否识别波浪号 (~) 字符,是否有替代 shutil.copy 识别的波浪号的替代方法?
问题描述
我正在尝试构建一个简单的 python 工具,它可以根据命令为我生成一些 HTML 模板。我正在尝试使其通用,我基本上只是希望它将位于某个目录中的三个文件复制到当前目录中。当我尝试抓取文件时,我使用 shutil.copy('~/tools/HTML_tools/[files])。虽然我不断收到错误,但似乎 shutil.copy 无法识别波浪号(~)字符,但我不确定。
我希望我的程序可以从任何目录运行。我在 .bashrc 中创建了一个别名来运行它。
别名 genHTML='python3 ~/tools/genHTML/genHTML.py'
我尝试改用 shutil.copy('/home/' + USER + '/tools/HTML_tools/[files]'),其中 USER 是存储在文本文件 user.txt 中的字符串。这也不起作用,因为打开 USER 文件也将依赖于波浪号字符,因为它也处于固定位置。
from shutil import copy
if __name__ == '__main__':
try:
copy('~/tools/HTML_tools/template.html', './')
copy('~/tools/HTML_tools/styles.css', './')
copy('~/tools/HTML_tools/script.js', './')
except IOError:
print('It appears something went wrong.')
我希望此文件将文件 template.html、styles.css 和 script.js 复制到当前目录中。相反,我得到一个 FileNotFoundError 说 ~/tools/HTML_tools/[files] 不存在。
解决方案
你想在打电话expanduser()
之前打电话copy()
。
from shutil import copy
import os
tools_dir = os.path.expanduser('~/tools/HTML_tools')
copy(os.path.join(tools_dir, 'template.html'), '.')
推荐阅读
- matplotlib - 应用tight_layout后调整matplotlib子图轴+标签
- android - 如何在 android 中捕获 5G 的 RSRP、SINR 等网络参数。我会在 NSA 模式下同时获得 LTE 和 5G 参数吗?
- java - 为什么这个三元语句给我一个语法错误?
- r - 每个特定变量添加多个数据框的值
- jquery - 6 个标签 每个标签都有一个手风琴 - 我看不到如何为手风琴设置单独的 ID 才能工作?
- javascript - JS中的对象数组按两个值排序
- amazon-web-services - 分层分区是否适用于 AWS Athena/S3?
- java - 退出java程序到linux命令
- css - 我需要更改 ngx-admin 星云主题上选定字母的颜色
- c# - 如何在 c# windows 窗体中的图表中显示起点和终点 x 轴标签?