我有一台开发笔记本电脑 ( 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.jsJavascript 的新手,所以我仍在学习详细信息。我来自 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