小编Ell*_*t B的帖子

在文本文件中查找/替换两个单词之间的字符串

我有这样的文本文件:

line 1
line 2
line 3
CommandLine arguments "render -h 192.168.1.1 -u user -p pass"
line 5
Run Code Online (Sandbox Code Playgroud)

我想替换IP地址并就地编写文件.棘手的部分是,行可能的顺序不同,命令行参数可能以不同的顺序写入.所以我需要找到以CommandLine开头的行,然后替换-h和下一个之间的字符串-.

到目前为止,我能够使用以下代码获取旧IP地址,但我不知道如何替换它并编写文件.我是Python的初学者.

with open(the_file,'r') as f:
    for line in f:
        if(line.startswith('CommandLine')):
            old_ip = line.split('-h ')[1].split(' -')[0]
            print(old_ip)
Run Code Online (Sandbox Code Playgroud)

python string

8
推荐指数
1
解决办法
454
查看次数

Google Sheets API 附加了额外的撇号

我已经在 Python 中使用这个 Google Sheets API 代码几个月来将数据附加到电子表格中,但它最近坏了。谁能看出这有什么问题?

body = {'values': [['2019-9-1', '41']]}
result = service.spreadsheets().values().append(spreadsheetId=SPREADSHEET_ID,valueInputOption='RAW', body=body, range='A:Z').execute()
Run Code Online (Sandbox Code Playgroud)

它创建这样的单元格,在每个单元格值前加上一个撇号:

+----+-----------+-----+
|    |     A     |  B  |
+----+-----------+-----+
| 33 | '2019-9-1 | '41 |
+----+-----------+-----+
Run Code Online (Sandbox Code Playgroud)

这是结果:

{'spreadsheetId': 'xxxxxxxxx', 'tableRange': 'data!A1:U32', 'updates': {'spreadsheetId': 'xxxxxxxxxx', 'updatedRange': 'data!A33:B33', 'updatedRows': 1, 'updatedColumns': 2, 'updatedCells': 2}}
Run Code Online (Sandbox Code Playgroud)

python google-sheets-api

5
推荐指数
1
解决办法
1328
查看次数

为什么 S3 ETag 有额外的字符?

我使用 s3api put-object 上传了一个带有 aws cli 的文件,响应如下:

{
    "ETag": "\"7bd173e5150f57f8ffe94ad61cd5ea9d\""
}
Run Code Online (Sandbox Code Playgroud)

当我用 md5 在本地计算散列时,我得到了这个:

173e5150f57f8ffe94ad61cd5ea9d
Run Code Online (Sandbox Code Playgroud)

为什么 ETag 前面多出 3 个字符?这是一个小文件 (8KB),因此它是单部分上传。

amazon-s3 amazon-web-services

5
推荐指数
1
解决办法
940
查看次数

Python 在 Windows 上启动缓慢

我注意到我的 Python 代码在 Windows 上运行的时间总是比在 Mac 上运行的时间长。有什么方法可以改善这一点吗?Windows机器非常强大,所以我不认为这是硬件问题(36核Xeon,96GB RAM,SSD)。Python 版本类似,我在 Windows 10 上运行 3.7.9,在 MacOS Mojave 上运行 3.7.7。
例如,一个简单的 print 语句需要花费 7 倍的时间。检查版本需要花费 12 倍的时间。
我卸载了 Windows 上的所有 pip 模块。

我正在尝试编写一些非常轻量级的脚本,其中快速运行时间很重要。

$ time python3 -c "print('hello world')"
hello world

real    0m0.030s
user    0m0.019s
sys     0m0.009s

$ time python3 --version
Python 3.7.7

real    0m0.015s
user    0m0.003s
sys     0m0.005s
Run Code Online (Sandbox Code Playgroud)

在 Windows 10 Powershell 上:

(Measure-Command {python -c "print('hello world')"}).TotalSeconds
0.2249363
(Measure-Command {python --version}).TotalSeconds
0.1776381
Run Code Online (Sandbox Code Playgroud)

编辑:我使用 SysInternals Process Monitor 捕获了事件,它显示了单次调用的 11,222 个事件python …

python

5
推荐指数
0
解决办法
1800
查看次数

AWS cli JMESpath 查询标签值

作为我上一个问题的后续问题,我无法让标签在这种类型的输出中正常工作。我想打印一个表格,其中每个属性作为一行。这就是我期望它的样子:

% aws --output table ec2 describe-instances --instance-id $id --query "Reservations[].Instances[0].[{ Property: 'Type', Value: InstanceType }]"         
-------------------------------
|      DescribeInstances      |
+-----------+-----------------+
| Property  |      Value      |
+-----------+-----------------+
|  Type     |  g4dn.12xlarge  |
+-----------+-----------------+
Run Code Online (Sandbox Code Playgroud)

但对于标签名称来说,它看起来像这样:

% aws --output table ec2 describe-instances --instance-id $id --query "Reservations[].Instances[0].[{ Property: 'Name', Value: Tags[?Key =='Name'].Value }]"   
-------------------
|DescribeInstances|
+-----------------+
|    Property     |
+-----------------+
|  Name           |
+-----------------+
||     Value     ||
|+---------------+|
||  Elliott-TKD  ||
|+---------------+|
Run Code Online (Sandbox Code Playgroud)

标签值是正确的,但格式很奇怪,当与更多其他行组合时,表格变得非常难看。

amazon-web-services aws-cli jmespath

5
推荐指数
1
解决办法
2814
查看次数

如何选择使用哪种字符编码?

在Python中,subprocess.Popen我们经常需要将外部工具的输出从字节转换为字符串。我一直没有考虑太多就使用UTF-8,到目前为止还没有遇到问题。我遇到了一些代码,其中有人使用 ASCII,这让我思考我应该如何知道要使用哪种编码,这重要吗?

\n

对于简单的字符串,这似乎没有什么区别,例如:

\n
>>> subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD'], encoding='ASCII')\n'4091146\\n'\n>>> subprocess.check_output(['git', 'rev-parse', '--short', 'HEAD'], encoding='utf-8')\n'4091146\\n'\n
Run Code Online (Sandbox Code Playgroud)\n

据我所知,UTF-8是一个更大的字符集,因此“特殊”字符不能编码为ASCII:

\n
>>> "B\xc3\xbcster".encode('utf-8')\nb'B\\xc3\\xbcster'\n>>> "B\xc3\xbcster".encode('ascii')\nTraceback (most recent call last):\n  File "<stdin>", line 1, in <module>\nUnicodeEncodeError: 'ascii' codec can't encode character '\\xfc' in position 1: ordinal not in range(128)\n
Run Code Online (Sandbox Code Playgroud)\n

我猜编码取决于外部程序,那么我怎么知道要使用哪一种呢?始终假设 UTF-8 安全吗?

\n

python character-encoding

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

邮递员覆盖响应类型

Postman 始终默认为“自动”响应类型。我正在使用一个总是返回的 API,Content-Type:text/plain即使它应该是 JSON。是否有某种方法可以强制 Postman 始终将整个集合的响应显示为打印精美的 JSON?

postman

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

Azure 沙盒资源组不可见

我尝试在 Azure 上遵循本教程。它为我创建了一个名为的沙箱资源组learn-30262576-0bfb-433d-b6f8-b8fa7dd69a9d,但该组没有出现在我的门户帐户中。我没有过滤器,订阅==全部和位置==全部。我只有一个 Microsoft 帐户,并且在两个网站上使用相同的电子邮件地址登录。

因此,继续练习,我创建了自己的资源组、应用程序服务,配置了启动的 Wordpress 等。现在我有一个公共 Wordpress URL,但练习不会让我通过,大概是因为它在错误的资源组中寻找我的 Wordpress 。

我等了2个小时沙箱过期了,然后做了一个新的,它也有同样的问题。

azure

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