我发现自己反复编写相同的代码块:
def stringInList(str, list):
retVal = False
for item in list:
if str in item:
retVal = True
return retVal
Run Code Online (Sandbox Code Playgroud)
有没有什么办法可以更快/更少的代码编写这个功能?我通常在if语句中使用它,如下所示:
if stringInList(str, list):
print 'string was found!'
Run Code Online (Sandbox Code Playgroud) 我目前正在这样做,但它非常慢,因为我有数TB的数据:
gsutil du -sh gs://my-bucket-1/
Run Code Online (Sandbox Code Playgroud)
对于子文件夹也是如此:
gsutil du -sh gs://my-bucket-1/folder
Run Code Online (Sandbox Code Playgroud)
有可能以某种方式在其他地方以某种其他方式获得完整存储桶(或子文件夹)的总大小,这种速度要快得多吗?
我有两个Google Cloud服务帐户; 我的两个项目各一个.
# ACCOUNTS
editor@someproj-1.iam.gserviceaccount.com
editor@someproj-2.iam.gserviceaccount.com
Run Code Online (Sandbox Code Playgroud)
gcloud
在执行命令之前,我可以告诉我需要使用哪个帐户:
gcloud set account [ACCOUNT]
Run Code Online (Sandbox Code Playgroud)
问题:我有什么方法可以配置gcloud
,gsutil
以便它们可以用于在各自项目中执行的操作,而不必一直手动在这些帐户之间切换?
我在一个项目中管理实例,我从另一个项目中的桶上传/下载文件.必须一直执行gcloud set_account [ACCOUNT]
中间命令变得非常繁琐.
我需要在两个项目中同时运行长时间运行的命令,这使我认为如果激活/取消激活用于这些命令的帐户,我将陷入陷阱.
也许我唯一的选择是从两个不同的Docker容器运行google-cloud-sdk?
为了创建一个10 GB的临时文件......
在Linux中你可以这样做:
fallocate -l 10G temp_10GB_file
Run Code Online (Sandbox Code Playgroud)
在Windows中,您可以这样做:
fsutil file createnew temp_10GB_file 10000000000
Run Code Online (Sandbox Code Playgroud)
......但是如果你在OS X中呢?
我hello.rpm
从Dockerfile构建时需要,但是这个rpm文件不能在线获取.
现在我通过启动临时Web服务器来提供文件服务,但理想情况下我想运行一个构建命令,使该本地文件在容器内可用.
这可能吗?
我的构建命令:
docker -t fredrik/helloworld:1.0 .
Run Code Online (Sandbox Code Playgroud)
我的Dockerfile:
FROM centos:6
RUN rpm -ivh hello.rpm
Run Code Online (Sandbox Code Playgroud) 这是我唯一的选择还是更快的方式?
# Delete contents in bucket (takes a long time on large bucket)
gsutil -m rm -r gs://my-bucket/*
# Remove bucket
gsutil rb gs://my-bucket/
Run Code Online (Sandbox Code Playgroud) 我有一个应用程序从中复制文件src
到dst
:
import shutil
from threading import Thread
t = Thread(target=shutil.copy, args=[ src, dst ]).start()
Run Code Online (Sandbox Code Playgroud)
我希望应用程序每隔5秒查询一次副本的进度,而不会锁定应用程序本身.这可能吗?
我的目的是将此进度设置为a QtGui.QLabel
以向用户提供有关文件副本的反馈.
使用线程shutil文件副本进行复制时可以实现吗?
是否可以使用相同的子进程命令按顺序执行任意数量的命令?
我需要每个命令在执行之前等待前一个命令完成,我需要它们全部在同一个会话/ shell中执行.我还需要它在Python 2.6,Python 3.5中工作.我还需要subprocess命令才能在Linux,Windows和macOS中工作(这就是为什么我echo
这里只使用命令作为示例).
请参阅下面的非工作代码:
import sys
import subprocess
cmds = ['echo start', 'echo mid', 'echo end']
p = subprocess.Popen(cmd=tuple([item for item in cmds]),
stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
for line in iter(p.stdout.readline, b''):
sys.stdout.flush()
print(">>> " + line.rstrip())
Run Code Online (Sandbox Code Playgroud)
如果这是不可能的,我应该采取哪种方法,以便在同一会话/ shell中以同步顺序执行我的命令?
在Windows 10和"程序和功能"中,您可以打开或关闭Windows功能,然后启动下载和安装.我希望将".Net Framework 3.5"打开,并将其下载并安装,但我需要通过例如Powershell脚本或命令来完成.我需要使用命令行.
怎么能实现这一目标?
我正在尝试使用Travis CI设置自定义Postgres凭据,因为我想避免要测试的代码中的现有凭据定义.
测试代码定义应该访问数据库:
'sqlalchemy.url': 'postgresql://foo:bar@localhost/testing_db'
Run Code Online (Sandbox Code Playgroud)
因此我创建了一个database.travis.yml
文件:
postgresql: &postgresql
adapter: postgresql
username: foo
password: bar
database: testing_db
Run Code Online (Sandbox Code Playgroud)
...并将以下内容添加到我的.travis.yml
:
services:
- postgresql
before_script:
- psql -c 'create database stalker_test;' -U postgres
- mkdir config && cp database.travis.yml config/database.yml
Run Code Online (Sandbox Code Playgroud)
但是,我在测试期间仍然得到这个:
OperationalError: (psycopg2.OperationalError) FATAL: role "foo" does not exist
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
python ×3
docker ×1
dockerfile ×1
gcloud ×1
gsutil ×1
list ×1
macos ×1
powershell ×1
python-2.6 ×1
python-3.5 ×1
string ×1
subprocess ×1
travis-ci ×1
windows-10 ×1