我有这个shell脚本来更新配置文件中的IP地址(任何匹配$old_address_pattern必须更改为$new_address):
grep -rl "$old_address_pattern" /etc \
| xargs sed -i "s/$old_address_pattern/$new_address/g"
Run Code Online (Sandbox Code Playgroud)
如果grep命令找不到匹配的文件,那么sed将抱怨"没有输入文件".当文件列表为空时,如何使此管道成功?
我的问题很难解释,但我尽力了。请在这方面帮助我。
我在 QtDesigner 中设计了一个 gui,并将 .ui 文件转换为 .py,例如 main_window.py。现在为了避免在 main_window.py 中进行更改,我为侦听器创建了另一个类。
class Main():
window = None
app = None
def __init__(self):
self.launch()
self.attach_listener()
self.execute()
''' Launch GUI '''
def launch(self):
self.app = QtGui.QApplication(sys.argv)
self.window = Ui_MainWindow()
self.window.show()
''' Execute Window '''
def execute(self):
sys.exit(self.app.exec_())
''' Attach Listeners '''
def attach_listener(self):
self.window.add_button.clicked.connect(self.add_listener)
self.window.delete_button.clicked.connect(self.delete_listener)
self.window.update_button.clicked.connect(self.update_listener)
self.window.connect(self.window.combo_box, QtCore.SIGNAL('activated(QString)'), self.logout_listener)
Run Code Online (Sandbox Code Playgroud)
我有另一个具有相同结构的 child_window.py,但由于 QApplication,我无法从这个窗口打开该窗口。我搜索了答案,但无法应用于我的代码。当类从 QtGui.QMainWindow 或 QtGui.QWidget 扩展时,这些答案是适用的,但我的情况不同。
我正在尝试使用 MySQLdb 模块删除数据库中的记录。在https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlcursor-execute.html 中,我发现multi=True在执行中执行多个查询但它产生错误。有人可以帮助我知道我缺少什么吗?
query = "DELETE FROM Service_Machine WHERE Id=(SELECT Id FROM Machines WHERE Id="+id+");" \
"DELETE FROM Machine_Usage WHERE Id=(SELECT Id FROM Machines WHERE Id="+id+");" \
"DELETE FROM Machines WHERE Id="+id+");
print(query)
self.cursor.execute(query, multi=True)
Run Code Online (Sandbox Code Playgroud)