>>> my_list = [[[[1, 2, 3], [4, 5, 6], ]]]
>>> [a for d in my_list for c in d for b in c for a in b]
[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
相当于
>>> my_list = [[[[1, 2, 3], [4, 5, 6], ]]]
>>> new_list = []
>>> for d in my_list:
... for c in d:
... for b in c:
... for a in b:
... new_list.append(a)
... print(new_list):
[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
从左到右阅读时,此语法似乎倒退.根据 …
我有一个Makefile,它定义了.PHONY清理目标,用于清理.o文件和可执行文件,目标如下:
...
.PHONY : clean
clean:
rm $(addprefix $(vq_DIR),$(vq_OBJS)) \
$(addprefix $(vq_DIR),vq) \
$(addprefix $(covq_DIR),$(covq_OBJS)) \
$(addprefix $(covq_DIR),covq) \
$(addprefix $(covq_2_DIR),$(covq_2_OBJS)) \
$(addprefix $(covq_2_DIR),covq_2) \
$(addprefix $(covq_2_DIR),$(test_OBJS)) \
$(addprefix $(covq_2_DIR),test)
Run Code Online (Sandbox Code Playgroud)
一切都按预期工作,但是当其中一些文件不存在时,rm会引发错误(没有这样的文件或目录),并且输出显示Makefile目标失败,当它明显做我想要的时候.
是否有一种很好的方法可以基本告诉rm命令"如果它们存在则删除这些文件,如果不存在则不要抱怨"?我查阅了联机帮助页rm,但没有找到这样的标志.
编辑:我实际上没有注意到-f联机帮助页中的标志描述,这是解决方案.
我正在尝试从.wav文件中读取数据.
import wave
wr = wave.open("~/01 Road.wav", 'r')
# sample width is 2 bytes
# number of channels is 2
wave_data = wr.readframes(1)
print(wave_data)
Run Code Online (Sandbox Code Playgroud)
这给出了:
b'\x00\x00\x00\x00'
Run Code Online (Sandbox Code Playgroud)
这是这首歌的"第一帧".这4个字节显然对应于每帧的(2个通道*2字节采样宽度)字节,但每个字节对应的是什么?
特别是,我试图将其转换为单声道振幅信号.
我不知道如何将多项式表达式分解为其复数根。
>>> from sympy import *
>>> s = symbol('s')
>>> factor(s**2+1)
2
s + 1
Run Code Online (Sandbox Code Playgroud) 我正在编写一个 shell 脚本,它定期执行任务并从另一个进程接收到 USR1 信号。
脚本的结构类似于这个答案:
#!/bin/bash
trap 'echo "doing some work"' SIGUSR1
while :
do
sleep 10 && echo "doing some work" &
wait $!
done
Run Code Online (Sandbox Code Playgroud)
但是,此脚本存在睡眠过程在后台继续并且仅在超时时终止的问题。(请注意,当在等待期间收到 USR1 时,睡眠进程会在其常规超时期间徘徊,但周期性回声确实被取消。)例如,您可以使用pkill -0 -c sleep.
我读了这个页面,它建议在陷阱动作中杀死挥之不去的睡眠,例如
#!/bin/bash
pid=
trap '[[ $pid ]] && kill $pid; echo "doing some work"' SIGUSR1
while :
do
sleep 10 && echo "doing some work" &
pid=$!
wait $pid
pid=
done
Run Code Online (Sandbox Code Playgroud)
但是,如果我们快速向 USR1 信号发送垃圾邮件,则此脚本会出现竞争条件,例如:
pkill -USR1 trap-test.sh; pkill -USR1 trap-test.sh
Run Code Online (Sandbox Code Playgroud)
然后它会尝试杀死一个已经被杀死的 …
import sh
sh.vim("lalala")
Run Code Online (Sandbox Code Playgroud)
不会在我的控制台中显示vim编辑器.设置_bg=Falsekwarg没有变化(因为那已经是默认值)
如果我使用该subprocess模块,它的工作原理:
import subprocess
subprocess.call(["vim", "lalala"])
Run Code Online (Sandbox Code Playgroud) 我正在使用java.io.BufferedWriter编写一些代码,我尝试的第一件事是:
String filename = new String("test.txt");
Charset charset = new Charset("US-ASCII");
try {
BufferedWriter bw = Files.newBufferedWriter(Paths.get(filename), charset);
bw.write("hello");
} catch (IOException e) {
System.out.println(e);
}
Run Code Online (Sandbox Code Playgroud)
输出一个空的test.txt看到一个例子,按以下格式,我试过:
String filename = new String("test.txt");
Charset charset = new Charset("US-ASCII");
try (BufferedWriter bw = Files.newBufferedWriter(Paths.get(filename), charset)){
bw.write("hello");
} catch (IOException e) {
System.out.println(e);
}
Run Code Online (Sandbox Code Playgroud)
输出第一行"hello"的文本文件.这种形式意味着什么,为什么它在我的第一次尝试没有时起作用?
当我尝试ftp.delete()从 ftplib 使用时,它会引发error_perm, resp:
>>> from ftplib import FTP
>>> ftp = FTP("192.168.0.22")
>>> ftp.login("user", "password")
'230 Login successful.'
>>> ftp.cwd("/Public/test/hello/will_i_be_deleted/")
'250 Directory successfully changed.'
>>> ftp.delete("/Public/test/hello/will_i_be_deleted/")
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/ftplib.py", line 520, in delete
resp = self.sendcmd('DELE ' + filename)
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/ftplib.py", line 243, in sendcmd
return self.getresp()
File "/System/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/ftplib.py", line 218, in getresp
raise error_perm, resp
ftplib.error_perm: 550 Delete operation failed.
Run Code Online (Sandbox Code Playgroud)
该目录存在,并且“用户”有足够的权限删除该文件夹。
该站点实际上是一个支持ftp的NAS(WD MyBookWorld)。 …