有没有实用的方法可以使用Python从图像文件列表中创建PDF?
在Perl我知道那个模块.有了它,我可以只用3行创建一个PDF:
use PDF::FromImage;
...
my $pdf = PDF::FromImage->new;
$pdf->load_images(@allPagesDir);
$pdf->write_file($bookName . '.pdf');
Run Code Online (Sandbox Code Playgroud)
我需要做一些与此类似的事情,但是在Python中.我知道pyPdf模块,但我想要一些简单的东西.
@编辑
如果您通过Google访问,请输入以下代码:
from fpdf import FPDF
from PIL import Image
def makePdf(pdfFileName, listPages, dir = ''):
if (dir):
dir += "/"
cover = Image.open(dir + str(listPages[0]) + ".jpg")
width, height = cover.size
pdf = FPDF(unit = "pt", format = [width, height])
for page in listPages:
pdf.add_page()
pdf.image(dir + str(page) + ".jpg", 0, 0)
pdf.output(dir + pdfFileName + ".pdf", "F")
Run Code Online (Sandbox Code Playgroud) 我有代码
import networkx as nx
import matplotlib.pyplot as plt
G = nx.DiGraph()
G.add_nodes_from([1, 2, 3, 4])
G.add_edges_from([(1, 2), (2, 1), (2, 3)])
nx.draw(G)
plt.savefig("graph.png")
plt.show()
Run Code Online (Sandbox Code Playgroud)
但是,我需要显示标签.如何在图形的节点内显示数值和单词(一,二,三和四)?
有没有办法在变量中分配区间?
例如
my_string = "abcdef"
my_interval = 1:3
print(my_string[my_interval])
Run Code Online (Sandbox Code Playgroud)
我想回来bc.但是,第二行不起作用.
我可以返回一个类的所有子类的列表吗?例如:
class Mother {
}
class ChildFoo: Mother {
}
class ChildBar: Mother {
}
let motherSubclasses = ... // TODO
print(motherSubclasses) // should to return [ChildFoo.self, ChildBar.self]
Run Code Online (Sandbox Code Playgroud) 在服务器端,我使用 Rails。我故意没有配置 CORS。因此,正如我所料,在浏览器中我无法向 Rails 服务器发出请求,因为我收到此错误:
但是我可以使用 curl 为终端做:
macabeus@macabeus-acer ~ $ curl http://localhost:3000/people
[{"id":3,"name":"macabeus","age":20,"created_at":"2016-07-31T22:45:05.490Z","updated_at":"2016-07-31T22:45:05.490Z"},{"id":4,"name":"foo","age":10,"created_at":"2016-07-31T22:45:24.415Z","updated_at":"2016-07-31T22:45:24.415Z"}]
Run Code Online (Sandbox Code Playgroud)
什么原因 curl 可以,但浏览器不能?我知道如何解决这个问题。我只是想了解我之前问的问题。
这篇文章说:
像 \1 或 \2 这样的反向引用匹配由前面带括号的表达式匹配的字符串,并且只有该字符串: (cat|dog)\1 匹配 catcat 和 dogdog 但不匹配 catdog 或 dogcat。就理论术语而言,具有反向引用的正则表达式不是正则表达式。
为什么?出于什么原因\1成为“正则表达式”不再是“正则表达式”?
我可以在 Swift 中创建一个生成器吗?
使用迭代器,我需要存储中间结果,例如:
struct Countdown: IteratorProtocol, Sequence {
private var value = 0
init(start: Int) {
self.value = start
}
mutating func next() -> Int? {
let nextNumber = value - 1
if nextNumber < 0 {
return nil
}
value -= 1
return nextNumber
}
}
for i in Countdown(start: 3) {
print(i)
} // print 1 2 3
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我需要存储value.
在我的情况下,我想使用生成器而不是迭代器,因为我不想将序列的中间结果存储在每个next.
我在Python中使用Selenium和PhantomJS.我需要打开一个新窗口并控制它.
出于测试目的,我这样做:
from selenium import webdriver
driver = webdriver.PhantomJS()
driver.get('http://www.google.com.br')
handle = driver.execute_script('return window.open("http://www.pudim.com.br/", "any", "height = 450, width = 800, menubar=yes,scrollbars=yes,toolbar=yes,location=no,resizable=yes");')
driver.switch_to.window(driver.window_handles[1])
print(driver.current_url)
Run Code Online (Sandbox Code Playgroud)
上面的代码部分工作.打印在最后一条消息上的URL about: blank与预期的一样http://www.pudim.com.br/
下面的代码完美无缺,然而,PyCharm抱怨语法错误 forward(100)
#!/usr/bin/python
from turtle import *
forward(100)
done()
Run Code Online (Sandbox Code Playgroud)
既然turtle是stanrd库我不认为我需要做额外的配置,对吗?

我正在旧版 C# 代码库上编写 proto3 消息,我注意到如果我替换
import "google/protobuf/wrappers.proto";
import "google/protobuf/descriptor.proto";
message Foo {
google.protobuf.Int32Value blah = 1;
}
Run Code Online (Sandbox Code Playgroud)
和:
message Foo {
int32 blah = 1;
}
Run Code Online (Sandbox Code Playgroud)
解析器仍然可以工作,但是blah接收到的0不是正确的值。
为什么会发生这样的事?不应该int32等于google.protobuf.Int32Value?