python - 如何在 bash shell 中将 myString 分配给导入的 Python 函数?
问题描述
我有一个小的家庭作业网页。我正在尝试每周自动生成网页。
我对此知之甚少。星期三我询问了有关导入我制作的 Python 函数的问题。我想我已经掌握了这个概念。我已经在 Idle 中测试了所有内容。所有模块都工作。
在我的 Python shell 中(我在 Ubuntu 中使用 Idle),一切都按照我的意愿进行。
我首先附加路径:
for i in range(0, len(pyPaths)):
sys.path.append(pyPaths[i])
然后导入模块:
from makeRBsInlineV1 import makeHTMLrbsNums
from makeCheckboxesInlineV1 import makeHTMLCBs
from makeDropdownboxesInlineV1 import makeDropdownboxes
from createhtmlTableInlineV1 import makeHTMLtable
from makeRBsInlineV2 import makeHTML_RBs
from readLinesTextboxesInlineV1 import readLinesmakeTBs
from makeThankyouPHPInlineV1 import makeThankyouPHP
所有这些模块都返回一个文本字符串,它是 html 标签 + 我的文本的混合体。它在 Firefox 中显示得很好。
在空闲时,我只写,例如:
myString = readLinesTextboxesInlineV3()
它问了我几个问题,然后就走了。之后,myString 就可以放入网页文本字符串中了。
但是,在 bash 中,我不能写
myString = readLinesTextboxesInlineV3()
在 bash 中,我不能写
myString = input('输入你想要的模块名称。')
然后输入,
readLinesTextboxesInlineV3()
因为那 myString 只是输入文本,而不是函数。
每周情况都不一样,我可能需要运行 2 个或更多模块,添加结果字符串,然后将它们写入网页文本字符串的正确位置。
我在一个
而真:
循环,所以我可以添加来自各种模块的字符串。
对于任何给定的一周,我都不知道我想使用哪个模块,所以我让它们都可用。
我有一个所有模块的列表:
pyFiles = ['makeCheckboxesInlineV1()', 'dropdownboxesInlineV1()', 'createhtmlTableInlineV1()', 'makeRBsInlineV2()', 'readLinesTextboxesInlineV3()', 'makeThankyouPHPInlineV1()']
当我在 bash 中运行 makeWebpage.py 时,如何将myString分配给上述任何一个模块?
我试过这个:
pyFiles = [makeHTMLCBs(), makeDropdownboxes(), makeHTMLtable(), makeHTML_RBs(), readLinesmakeTBs(), makeThankyouPHP()]
声明函数列表。麻烦的是,一旦我这样做了,Python 就想立即运行第一个函数。我希望我可以输入一个数字并运行说:
myString = pyFiles[3]
解决方案
对您来说最好的解决方案是添加arguments
到您的 python 脚本中,该脚本可以添加flag
到您的命令行中。
这样,您可以从 shell(示例)中调用您的脚本,如下所示:
python makeWebpage.py --module "makeCheckboxesInlineV1"
Python 标准库提供argparse
了满足特定需求的模块。处理 shell 参数并将其转换为 python 变量真的很容易。
我建议您阅读我发现自己非常有用的那篇博客文章。你最需要的部分是argparse 呢?
在你的主目录中添加这样的内容:
parser = argparse.ArgumentParser()
group = parser.add_mutually_exclusive_group()
group.add_argument('-m', '--module', action='store_true')
args = parser.parse_args()
module = args.module # The variable module now is a String containing "makeCheckboxesInlineV1"
推荐阅读
- android - hdpi 设备上 RecyclerView espresso 测试中的 NullPointerException
- c# - 将参数传递给 C# 和 SQL Server 2005 中的 In 查询
- json - 为什么 Wayback Machine Json API 只返回空的 "archived_snapshots": {} 元素?
- python - 根据python中辅助列的值添加和平均一组列
- spring - 如何跨 Spring Security 重定向保留备用域名 - Spring Security SAML
- c# - 使用 C# Windows 10 是否可以判断视频/相机当前是否被任何应用程序使用?
- tfs - Azure Devops - 无法获取部署状态
- jquery - 无法在 Jquery 中访问 JSON 数据
- azure - 无法使用 Azure Databricks 装载 Azure Data Lake Storage Gen 2
- django - Chrome 上未设置第三方 cookie(Django 应用程序)