我有一台开发笔记本电脑 ( Mint 19.3
) 和一台测试服务器 ( Ubuntu 18.04.4 LTS
)。
笔记本电脑是 Docker version 19.03.5, build 633a0ea838
,服务器是 Dockerversion 19.03.12, build 48a66213fe
我在容器内运行 Python 3.6 代码,它使用subprocess
(下面的代码)创建到第三台服务器的 sshfs 挂载,之后 python 代码遍历挂载的目录。
在我的开发笔记本电脑上一切正常。但是在服务器上,目录会挂载(并且可以通过mount
命令看到),但是 cd 进入目录只是挂起,而 Python 代码的后续walk
只是挂起。(注意:python 代码永远不会崩溃或出错。它只是永远挂起。)
但是,如果我在容器的命令行中手动使用相同的 sshfs 命令,则该目录可以正常工作。
我不知道如何解决这个问题。
===2020-09-25 更新===
好的。由于 Python 代码使用子进程,sshfs 挂载显然可用于任何想要使用它的终端窗口。
我尝试从容器内的新终端窗口访问安装,但是当我 cd 到安装时 - 窗口只是冻结。
好吧,我把所有东西都搁置了一夜——现在当我尝试 cd 进入安装时......它起作用了。这就像坐骑必须坐几个小时才能工作。
有任何想法吗?
Python代码
@target_dir.setter
def target_dir(self, value):
if value is None:
_tmp = tempfile.mkdtemp()
self._TARGETDIR = _tmp
else:
self._TARGETDIR …
Run Code Online (Sandbox Code Playgroud) 我正在尝试从现有数据中即时创建表格...但是,我需要的表格具有双主键.我找不到如何满足这些限制.
即我从以下两个表开始......
self.DDB_PAT_BASE = Table('DDB_PAT_BASE', METADATA,
Column('PATID', INTEGER(), primary_key=True),
Column('PATDB', INTEGER(), primary_key=True),
Column('FAMILYID', INTEGER()),
)
self.DDB_ERX_MEDICATION_BASE = Table('DDB_ERX_MEDICATION_BASE', METADATA,
Column('ErxID', INTEGER(), primary_key=True),
Column('ErxGuid', VARCHAR(length=36)),
Column('LastDownload', DATETIME()),
Column('LastUpload', DATETIME()),
Column('Source', INTEGER()),
)
Run Code Online (Sandbox Code Playgroud)
当我尝试以下内容时,它有效......
t = Table('testtable', METADATA,
Column('ErxID', INTEGER(), ForeignKey('DDB_ERX_MEDICATION_BASE.ErxID')),
)
t.create()
Run Code Online (Sandbox Code Playgroud)
但是,以下两个都给我错误...
t = Table('testtable', METADATA,
Column('PATID', INTEGER(), ForeignKey('DDB_PAT_BASE.PATID')),
)
t.create()
t = Table('testtable', METADATA,
Column('PATID', INTEGER(), ForeignKey('DDB_PAT_BASE.PATID')),
Column('PATDB', INTEGER(), ForeignKey('DDB_PAT_BASE.PATDB')),
)
t.create()
Run Code Online (Sandbox Code Playgroud)
sqlalchemy.exc.OperationalError: (pymssql.OperationalError) (1776, "There are no primary or candidate keys in the referenced table 'DDB_PAT_BASE' that match …
Run Code Online (Sandbox Code Playgroud) 我在工作中回到了很多Bash脚本,我生锈了.
有没有办法从函数返回本地值字符串而不使其全局或使用echo?我希望函数能够通过屏幕与用户交互,但也可以将返回值传递给变量而不需要像export return_value="return string"
.printf命令似乎完全像echo一样响应.
例如:
function myfunc() {
[somecommand] "This appears only on the screen"
echo "Return string"
}
# return_value=$(myfunc)
This appears only on the screen
# echo $return_value
Return string
Run Code Online (Sandbox Code Playgroud) 我只是想更好地感受Python文档字符串的布局(之间""" """
)
我见过不同布局的docstrings ......比如...
"""
@DESCRIPTION
Ive seen tags STARTING with an at-sign
:DESCRIPTION:
Tags with colons
DESCRIPTION
And tags with nothing
"""
Run Code Online (Sandbox Code Playgroud)
这些都有功能吗?是@
用药剂关联?或者这些只是开发者之间的偏好?我查看了docstrings的样式指南,但看不到它在哪里解决这些问题......
谢谢!
旋转我创建的图像时遇到问题.因为代码分布在许多方法中,所以我把我认为的相关命令放在下面.
问题是,当图像成功创建时,当我使用img.rotate(-90)旋转它时...图像旋转,但托盘/背景/画布看起来没有(参见附图).
我怎么能纠正这个.我是否需要创建更大的透明背景?我可以让背景/画布也旋转......还是旋转然后调整背景/画布的大小?
第一个示例图像(QRCODE)
img = Image.new('RGB', (x,y), 'white')
qr = qrcode.QRCode(version=1,error_correction=qrcode.constants.ERROR_CORRECT_L,box_size=10,border=1,)
qr.add_data('QRB.NO/AbCd1')
qr.make(fit=True)
QRimg = qr.make_image()
img = img.paste(QRimg, (x,y))
img.show() #333
raw_input('(Above is unrotated QRcode image) Press enter...') #333
img = img.rotate(-90)
print img, type(img)
img.show() #333
raw_input('Above is the rotated -90 QRcode image. Press enter...') #333
Run Code Online (Sandbox Code Playgroud)
第二个例子图像
font_name = 'Arial.ttf'
font_size = 16
font = ImageFont.truetype(font_name, font_size)
img = Image.new('RGB', (x,y), color=background_color)
# Place text
draw = ImageDraw.Draw(img)
draw.text( (corner_X,corner_Y), 'QRB.NO/AbCd1', font=font, fill='#000000' )
draw.rectangle((0,0,x-1,y-1), outline = …
Run Code Online (Sandbox Code Playgroud) 有没有办法改变CLASS OBJECT以type(object)
报告自定义字符串?
class MyClass(object):
def __init__(self, t):
if 'detector' in t:
my_type_string = "I am set as a detector."
else:
my_type_string = "I am set as a broadcaster."
>>> o = MyClass('detector')
>>> type(o)
I am set as a detector.
Run Code Online (Sandbox Code Playgroud) 我有一个脚本,实例化了许多子对象.当脚本(和这些对象)结束时......对象需要做一些清理(尤其是临时文件关闭和删除).
我一直在阅读如何__del__
不可靠 - 但是上下文管理似乎不起作用,子对象不会持久.他们需要四处闲逛(做文件读写等事情)
一个例子:
WRITER.PY
import os
class Writer(object):
def __init__(self, filename):
self.filename = filename
self.open()
def open(self):
self.fh = open(self.filename, "w+", 0)
def write(self, msg):
print >>self.fh, str(msg)
def close(self):
self.fh.close()
os.remove(self.filename)
def __enter__(self):
print "entered"
# self.open()
def __exit__(self, type, value, traceback):
print "__exit__"
self.close()
Run Code Online (Sandbox Code Playgroud)
MAIN.PY
def myfunc(filename):
with WRITER.Writer(filename) as writeit:
# do some stuff
writeit.write("hallo")
# do some more stuff
writeit.write("more results")
# even more stuff
writeit.write("goodbye")
Run Code Online (Sandbox Code Playgroud)
但是当我运行时myfunc()
,对象一旦完成就会被垃圾收集__init__()
.它直接从enter到exit并且在with语句之后不执行任何任务.如果我把开放放入__init__ …
我是Node.js
Javascript 的新手,所以我仍在学习详细信息。我来自 python 背景。
我有一个可导入的函数,它创建一个记录器,并将日志对象传递回main
脚本。
我正在将其他模块导入main
脚本,并且我希望它们使用相同的日志记录对象/设置。
在 Python 中,记录器对象是一个单例,当从下标或导入的方法再次实例化时,它将获取所有现有的传输。
这也可以在 JS 中完成,而不必只是将logger
对象作为函数的参数传入?
记录器.js
const { createLogger, transports } = require("winston");
let { format } = require("winston");
let logger;
let log_level;
let logfile;
let screendump;
function formatParams(info) { (...snip...) }
//Set format default here
format = format.combine( ...snip ...);
module.exports = {
set: function (argv) { // defaults
/* Set logging. Can be set by command line or config file */
var log_level …
Run Code Online (Sandbox Code Playgroud) python ×4
bash ×1
casting ×1
class ×1
containers ×1
del ×1
docker ×1
docstring ×1
echo ×1
formatting ×1
function ×1
import ×1
interactive ×1
javascript ×1
logging ×1
node.js ×1
pymssql ×1
python-3.x ×1
repr ×1
return ×1
rotation ×1
sql-server ×1
sqlalchemy ×1
sshfs ×1
string ×1
winston ×1