Automagica 是一个开源智能机器人流程自动化(SRPA,Smart Robotic Process Automation)平台,借助 Automagica,自动化跨平台流程变得轻而易举。Automagica 可以通过简单程序脚本实现打开各种应用程序并对应用进行操作。
Automagica是oakwood开源的一个项目, 源码开放在automagica。
它基于Python和Tensorflow等开源技术,因此可以轻松接入人工智能领域的最新和重大发展,将其用于日常办公。
Automagica 需要 Python 3.7 环境,官方支持 Windows 10 平台,Linux 和 Mac 目前官方还不支持。
Automagica 使用场景:
- 桌面交互自动化
- Office 自动化,例如打开 Excel 并进行数据填充
- Web 自动化,例如打开网址并进行网页操作
- 商业应用自动化,支持 SAP、Oracle Apps、Siebel、PeopleSoft 与 Salesforce 等
- 自动打开邮件应用并收发邮件
- 远程控制等等
1.鼠标和键盘自动化
1.鼠标
1.1GetMouseCoordinates()
以弹框的形式返回当前鼠标的x与y坐标
1.2左键单击:
'''ClickOnPosition(x, y)'''
1.3双击:
DoubleClickOnPosition(x, y)
1.4右键点击:
RightClickOnPosition(x, y)
1.5将指针移动到某个位置。这可以通过绝对坐标对或相对于当前鼠标位置确定的位置来完成:
绝对 MoveToPosition(x, y)
相对 MoveRelative(x, y)
1.6要在按住按钮的同时将鼠标从当前位置移动到指定位置,例如在屏幕上拖动对象,可以使用以下功能:
DragToPosition(x, y, button="left")
第三个参数指定需要按下哪个鼠标按钮。这可以是一个字符串:“left”,“middle”或“right”。下面的示例将鼠标移动到“chrome”图标的位置并将其拖动到其他位置。
MoveToPosition(532, 443) # 选中网易云简报 DragToPosition(800, 800, "left") # 拖动到800,800
2.键盘
2.1要按下并释放键盘上的某个键,您可以使用以下功能:
PressKey(key="Keyname")
参数应该是一个字符串。以下列表包含每个可能的键名。: ['\t', '\n', '\r', ' ', '!', '"', '#', '$', '%', '&', "'", '(', ')', '*', '+', ',', '-', '.', '/', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ':', ';', '<', '=', '>', '?', '@', '[', '\', ']', '^', '_', '`', 'a', 'b', 'c', 'd', 'e','f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '{', '|', '}', '~', 'accept', 'add', 'alt', 'altleft', 'altright', 'apps', 'backspace', 'browserback', 'browserfavorites', 'browserforward', 'browserhome', 'browserrefresh', 'browsersearch', 'browserstop', 'capslock', 'clear', 'convert', 'ctrl', 'ctrlleft', 'ctrlright', 'decimal', 'del', 'delete', 'divide', 'down', 'end', 'enter', 'esc', 'escape', 'execute', 'f1', 'f10', 'f11', 'f12', 'f13', 'f14', 'f15', 'f16', 'f17', 'f18', 'f19', 'f2', 'f20', 'f21', 'f22', 'f23', 'f24', 'f3', 'f4', 'f5', 'f6', 'f7', 'f8', 'f9', 'final', 'fn', 'hanguel', 'hangul', 'hanja', 'help', 'home', 'insert', 'junja', 'kana', 'kanji', 'launchapp1', 'launchapp2', 'launchmail', 'launchmediaselect', 'left', 'modechange', 'multiply', 'nexttrack', 'nonconvert', 'num0', 'num1', 'num2', 'num3', 'num4', 'num5', 'num6', 'num7', 'num8', 'num9', 'numlock', 'pagedown', 'pageup', 'pause', 'pgdn', 'pgup', 'playpause', 'prevtrack', 'print', 'printscreen', 'prntscrn', 'prtsc', 'prtscr', 'return', 'right', 'scrolllock', 'select', 'separator', 'shift', 'shiftleft', 'shiftright', 'sleep', 'space', 'stop', 'subtract', 'tab', 'up', 'volumedown', 'volumemute', 'volumeup', 'win', 'winleft', 'winright', 'yen', 'command', 'option', 'optionleft', 'optionright']
2.2使用下一个功能可以执行两个或三个键的热键组合:
PressHotkey(first_key,second_key,third_key=None)
参数是需要按下的键。如果只按下两个键,则可以省略第三个参数。下一个示例使用组合键“Ctrl + Shift + Esc”打开任务管理器:
PressHotkey("ctrl","shift","esc")
2.3可以使用以下函数在所选字段中键入文本:
Type(text, interval_seconds=0.001)
第一个参数是以字符串形式输入的文本,而变量是键击之间的时间。请注意,您只能按单个字符键。像“:”,“F1”,......之类的键不能成为第一个参数的一部分。以下示例类型在所选字段中键入“automagica.be/”(在本例中为chrome搜索栏),然后按Enter键:
Type("automagica.be/", interval_seconds=0.01) PressKey("enter")
2.4常用功能键:
Capslock() Numlock() Enter() SpaceBar() Backspace() Delete() Endkey() Tab()
2.浏览器自动化
1.基本功能
1.1要打开浏览器,请从菜单中选择“打开Chrome浏览器”或输入命令:
browser = ChromeBrowser()
通过单击菜单中的“浏览到URL”浏览到网站,或使用以下命令:
browser.get('https://mywebsite.com/')
1.2关闭浏览器可3以通过以下方式完成:
browser.close()
1.3要在浏览器的历史记录中前后移动
browser.forward() browser.back()
1.4要点击一个元素:
element.click() #可插入xpath表达式
1.5要在文本字段中输入文本:
element.send_keys("some text") #可用于提交表单
1.6要清除元素:
element.clear()
2.导航
2.1查找单个元素
find_element('XPath')
2.2查找多个元素
find_elements('XPath')
2.3按名称选择
<html> <body> <form id="loginForm"> <input name="username" type="text" /> <input name="password" type="password" /> <input name="loginbutton" type="submit" value="Login" /> <input name="clearbutton" type="button" value="Clear" /> </form> </body> <html> //*[@id="custom-bg"]
用户名和密码字段可以通过以下方式找到:
要查找并单击登录按钮:
login = browser.find_element_by_name('loginbutton') login.click()
边注
在双重命名的情况下,按名称查找始终会找到第一个元素。想象一下以下的html代码:
<html> <body> <form id="loginForm"> <input name="username" type="text" /> <input name="continue" type="submit" value="Login" /> <input name="continue" type="button" value="Clear" /> </form> </body> <html>
以下命令将找到名为“continue”的第一个元素,从而选择Login按钮:
continue = browser.find_element_by_name('continue')
2.4按ID选择
当已知时,您可以按Id选择元素。这是一个健壮的方法,但通常nog每个元素都有一个已知的id标记。考虑下面的html代码:
<html> <body> <form id="loginForm"> <input name="username" type="text" /> <input name="continue" type="submit" value="Login" /> </form> </body> <html>
在这种情况下,表单具有id“loginForm”。因此,可以使用Id选择表单:
loginform = browser.find_element_by_id('loginForm')
2.5Xpath选择
XPath(XML路径语言)是一种用于从XML文档中选择节点的查询语言。由于HTML可以是XML的实现(称为XHTML),因此该语言可用于在Web应用程序中查找和操作目标元素。
使用XPath的优点是可以到达HTML结构中的每个元素。有关如何使用XPath查找和使用元素的直观介绍,请参阅快速入门。使用完整XPath的缺点是它不是很强大。即使HTML页面中的最轻微更改也会导致绝对XPath更改,结果可能导致机器人无法找到正确的元素。请注意,这与使用元素名称或ID不同,因为只要名称或ID保持不变,仍然可以在HTML页面中找到更改的元素。
因此,在使用Xpath时,可以通过查找具有id或name属性的附近元素(理想情况下为父元素)来增强稳健性,以便您可以根据关系找到目标元素。
使用以下源代码:
<html> <body> <form id="loginForm"> <input name="username" type="text" /> <input name="password" type="password" /> <input name="loginbutton" type="submit" value="Login" /> <input name="clearbutton" type="button" value="Clear" /> </form> </body> <html> //*[@id="custom-bg"]
选择用户名:
- 绝对路径(请注意,如果HTML仅稍微更改,这将会中断)
- 指向表单中的第一个元素
- 第一个输入元素,其属性名为“name”,值为username
username = browser.find_element_by_xpath("//form[input/@name='username']") username = browser.find_element_by_xpath("//form[@id='loginForm']/input[1]") username = browser.find_element_by_xpath("//input[@name='username']")
“清除”按钮可以通过以下方式找到:
- 表单元素的第四个输入元素,其属性名为id,值为loginForm
- 输入名为name的属性,值为continue,属性名为type,值为button
clear_button = browser.find_element_by_xpath("//form[@id='loginForm']/input[4]") clear_button = browser.find_element_by_xpath("//input[@name='continue'][@type='button']")
表格可以通过以下方式选择:
- 绝对路径(请注意,如果HTML仅稍微更改,这将会中断):
- HTML中的第一个表单元素
- 表单元素,其属性名为id,值为loginForm
login_form = browser.find_element_by_xpath("/html/body/form[1]") login_form = browser.find_element_by_xpath("//form[1]") login_form = browser.find_element_by_xpath("//form[@id='loginForm']")
2.6浏览示例
以下示例浏览Google,搜索Automagica,打开第一个Google搜索结果链接
Open Chrome browser = ChromeBrowser() # Browse to Google browser.get('https://google.com') # Enter Search Text browser.find_element_by_xpath('//[@id="tsf"]/div[2]/div/div[1]/div/div[1]/input').send_keys('automagica') # Submit browser.find_element_by_xpath('//[@id="tsf"]/div[2]/div/div[1]/div/div[1]/input').submit() # Click the first link browser.find_elements_by_class_name('r')[0].click()
3.流程活动
1.输入路径名
在以下许多函数中,路径名都需要作为输入参数。重要的是以正确的方式输入这些以防止所需操作的故障。pathname指定文件,文件夹,可执行文件......所在的目录。这种路径名的一个示例是:“C:\ Users \ Bob \ Desktop \ Automagica.pptx”。在函数中输入时,路径名必须是字符串。因此,每个反斜杠都需要在输入中加倍。下一段代码说明了如何在函数中输入路径名。
Pathname: C:\Users\Bob\Desktop\Automagica.pptx # As a string: "C:\Users\Bob\Desktop\Automagica.pptx" # In a function: Openfile("C:\Users\Bob\Desktop\Automagica.pptx")
在Windows资源管理器中,可以通过按Shift +右键单击文件,文件夹来确定路径...弹出一个菜单,您可以在其中选择“复制为路径”(参见图像)。这将te路径作为字符串复制到剪贴板,例如“C:\ Program Files(x86)\ Dropbox \ Client \ Dropbox.exe”。此路径仍需要将其所有反斜杠加倍,以使其以正确的形式输入函数:“C:\ Program Files(x86)\ Dropbox \ Client \ Dropbox.exe”。
2.标准Windows应用程序
Windows有几个标准的应用程序,可以使用Automagica的功能打开。以下列表总结了所有可用的功能。如果要打开的程序在此列表中,建议使用这些功能之一,而不是下一小节中描述的更一般的功能。
打开Windows计算器:
OpenCalculator()
打开MS Paint:
OpenPaint()
打开记事本:
OpenNotepad()
打开Windows截图工具:
OpenSnippingTool()
打开Windows控制面板:
OpenControlPanel()
打开Windows Clean Manager:
OpenCleanManager()
打开Windows拨号器:
OpenDialer()
打开Windows Volume Mixer:
OpenVolumeMixer()
打开Windows XPS Viewer:
OpenXPSViewer()
3.一般命令
·以上功能都是特定于程序的。如果已知确切路径,则可以运行程序或将其关闭。以下函数可以打开位于指定路径的可执行文件:
Start Process LaunchProcess(process_executable="pathname")
以下示例说明了该功能的用法。该代码将打开百度网盘。
LaunchProcess("F:\software\百度云\BaiduNetdisk\baidunetdisk.exe")
(慢)替代方案是使用:
OpenProgramByName(name, main_drive = "C:\")
此函数不需要在第一个变量中输入完整路径作为输入。回到上面的例子,Dropbox也可以通过以下方式打开:
OpenProgramByName("Dropbox")
4.运行程序
Automagica可以检查计算机上当前活动的程序。这可以使用需要进程名称的常规函数来完成,如果指定的程序处于活动状态,则返回True:
ProcessRunning(name="program_name")
除此之外,还有一些特定于程序的函数,如果该程序当前正在运行,则返回True。这些列表如下:
ChromeRunning() WordRunning() ExcelRunning() PowerpointRunning() DropboxRunning() FirefoxRunning() TeamviewerRunning() SkypeRunning() EdgeRunning() OnedriveRunning() IllustratorRunning()
最后,每个活动程序的列表可以显示如下:
ListRunningProcesses()
5.监控
1.以下函数列表可用于返回有关CPU,磁盘,内存等当前状态的信息。
CPULoad(measure_time=1)
2.返回所有核心的平均CPU负载。每秒测量一次,调整measure_time(秒)以获得更长的平均测量时间。标准measure_time是1秒。
NumberOfCPU(logical=True)
3.返回当前系统中CPU的数量。参数'logical'确定是否仅将逻辑单元添加到计数中,默认值为True。
CPUFreq()
4.返回CPU当前运行的频率。还显示最小和最大频率。
CPUStats()
5.返回CPU统计信息:CTX开关,intterupts,软中断和系统调用的数量。
MemoryStats(mem_type='swap')
6.返回内存统计信息:使用的总数,已用数,空闲数和百分比数。为虚拟内存选择mem_type ='virtual',为交换内存选择mem_type ='swap'(标准)。
DiskStats()
7.返回主磁盘的磁盘统计信息:总数,已用数,空闲数和使用百分比。
DiskPartitions()
8.返回每个分区的信息元组。
BootTime()
9.返回时间PC在纪元后几秒内启动。
TimeSinceLastBoot()
返回自上次启动以来的时间(秒)
5.办公自动化
1.word
要打开Word文档:
document = OpenWordDocument('example.docx')
替换Word文档中的单词。这在使用表单模板时特别有用。确保模板包含唯一的占位符变量,以便自动填充不会导致含糊不清。
document = ReplaceTextInDocument(document, text='[placeholder]', replace_with='My text')
将Word文档转换为PDF:
ConvertWordToPDF(word_filename='C:\document.docx', pdf_filename='C:\document.pdf')
2.Excel
2.1读写
Excel中的自动化大多数时候都需要读写单元格。在Automagica中,这非常简单。
读取单元格有两个功能。
Using cell value ExcelReadCell(path="\pathname", cell="A1", sheet=None)
从Excel文件中读取单元格并返回其值。确保输入有效路径,例如“C:\ Users \ Bob \ Desktop \ RPA Examples \ data.xlsx”。您想要读取的单元格需要由单元名称定义,例如“A2”。第三个变量是一个字符串,其中包含需要读取的工作表的名称。如果省略,该函数将读取当前活动工作表的输入单元格。
Using row column ExcelReadRowCol(path="\pathname", r=1, c=1, sheet=None
从Excel文件中读取单元格并返回其值。确保输入有效路径,例如“C:\ Users \ Bob \ Desktop \ RPA Examples \ data.xlsx”。您要读取的单元格必须是行和列。例如r = 2且c = 3指的是细胞C3。第三个变量是字符串,其中包含需要读取的工作表的名称。如果省略,该函数将读取活动工作表的输入单元格。第一行定义为行号1,第一列定义为列号1
与读取单元格类似,有两个函数用于将值写入单元格。
Using cell value ExcelWriteCell(path="\pathname", sheet=None, cell="A1", write_value="Value")
将单元格写入Excel文件。确保输入有效路径,例如“C:\ Users \ Bob \ Desktop \ RPA Examples \ data.xlsx”。单元格应由单元名称定义。例如“B6”。价值可以是任何东西,标准是“价值”。执行代码时,请确保关闭要写入的.xlsx文件。
Using row and column ExcelWriteCell("C:\Users\Bob\Desktop\RPA Examples\data.xlsx",1,1,value="Robot")
从Excel文件中读取单元格并返回其值。确保输入有效路径,例如“C:\ Users \ Bob \ Desktop \ RPA Examples \ data.xlsx”。您要读取的单元格必须是行和列。例如r = 2且c = 3指的是细胞C3。第三个变量需要是一个字符串,其中包含需要读取的工作表的名称。如果省略,该函数将读取活动工作表的输入单元格。第一行定义为行号1,第一列定义为列号1。
2.2基本操作
在阅读和写作之后,Automagica为.xlsx文件提供了一些基本操作。这些列在下面。
ExcelCreateWorkbook(path="pathname")
创建一个新的.xlsx文件并将其保存在指定的路径下。如果输入的路径已存在,则该函数不执行任何操作。
ExcelOpenWorkbook(path="pathname")
使用Microsoft Excel打开.xlsx文件。确保输入有效路径。这可以是引用现有.xlsx文件的路径,例如“C:\ Users \ Bob \ Desktop \ RPA Examples \ data.xlsx”。这将打开现有文件。您还可以输入完全新的路径。在这种情况下,该函数使用该路径创建一个新的.xlsx文件,并使用Excel打开它。
ExcelSaveExistingWorkbook(path="pathname", new_path=None)
保存(作为)现有的.xlsx文件。第二个变量是文件需要保存的新路径。如果您只想保存文件而不想“另存为”,则可以忽略此变量。要使功能正常工作,请务必不要打开要保存的文件。
ExcelCreateWorkSheet(path="pathname", sheet_name=None)
在path变量指定的现有工作簿中创建具有指定名称的新工作表。如果未输入sheet_name,则新工作表将命名为“sheet1”,“sheet2”,“sheet3”,...,具体取决于已存在的工作表。确保您输入引用.xlsx文件的有效路径,例如“C:\ Users \ Bob \ Desktop \ RPA Examples \ data.xlsx”。要使函数正常工作,请务必在执行期间关闭.xlsx文件。
ExcelGetSheets(path="pathname")
返回包含Excel文件的工作表名称的列表。确保您输入引用.xlsx文件的有效路径,例如“C:\ Users \ Bob \ Desktop \ RPA Examples \ data.xlsx”。
ExcelPutRowInList(path="pathname", start_cell="B3", end_cell="E8", sheet=None)
将指定行的元素放在列表中。需要读取的.xlsx文件和工作表分别由path-sheet和sheet变量指定。如果未指定工作表,则工作表变量将设置为当前活动工作表。还要使shure进入有效路径,例如“C:\ Users \ Bob \ Desktop \ RPA Examples \ data.xlsx”。该行由引用第一个和最后一个单元格的字符串指定。例如,下图中的行由start_cell =“C4”和end_cell =“G4”定义。使用这两个单元格调用函数会返回一个列表:[8,“RPA”,None,19,“Automagica]。要使函数起作用,两个单元格需要属于同一行,start_cell需要是单元格左手边。
ExcelPutColumnInList(path="pathname", start_cell="A3", end_cell="A8", sheet=None)
将指定列的元素放在列表中。需要读取的.xlsx文件和工作表分别由path-sheet和sheet变量指定。如果未指定工作表,则工作表变量将设置为当前活动工作表。还要使shure进入有效路径,例如“C:\ Users \ Bob \ Desktop \ RPA Examples \ data.xlsx”。该列由引用第一个和最后一个单元格的字符串指定。例如,下图中的区域由start_cell =“C4”和end_cell =“C7”定义。调用函数返回此两个单元格返回一个列表:[8,“RPA”,19,“Automagica”]。要使功能起作用,两个输入的单元格必须属于同一列,start_cell需要是上层单元格。
ExcelPutSelectionInMatrix(path="pathname", upper_left_cell="B2", bottom_right_cell="C3", sheet=None)
将指定选择的元素放在矩阵中。需要读取的.xlsx文件和工作表分别由path-sheet和sheet变量指定。如果未指定工作表,则工作表变量将设置为当前活动工作表。还要使shure进入有效路径,例如“C:\ Users \ Bob \ Desktop \ RPA Examples \ data.xlsx”。选择由指向左上角和右下角单元格的字符串指定。例如,在下图中,该区域由upper_left_cell =“C4”和bottom_right_cell =“E6”定义。该函数将返回一个矩阵,其值为:[[8,“Automagica”,12],[“RPA”,15,无],[19,无,55]。如果单元格为空,则其值设置为“无”。
3.PDF操作
3.1合并PDF文件
MergePDF(pdf1="pathname", pdf2="pathname", merged_pdf="pathname")
此功能可以合并两个现有的PDF文件。前两个参数是需要合并的PDF,作为路径输入。pdf2中的页面已添加到pdf2中。合并的PDF接收由第三个参数指定的新路径。
3.2从PDF中提取文本
ExtractTextFromPDFPage(path="pathname", page=1)
此函数从给定页面中提取所有文本并将其作为字符串返回。需要输入pdf作为路径。请注意输入的页面需要大于0。
4.文件和文件夹操作
在许多自动化过程中,控制存储的文件和目录很有用。Automagica具有一些功能,可以使文件和文件夹的操作尽可能简单。
4.1文件操作
在以下部分中,描述了Automagica为操作文件提供的功能。此函数的参数主要由路径组成。在此路径中,始终在路径中使用完整文件名非常重要。例如,如果名为“Automagica”的png文件需要操作,则可能的路径可能是:“C:\ Users \ Bob \ Desktop \ Automagica.png”。要使功能起作用,需要在.png中包含名称。
4.1.1打开文件
要打开文件,Automagica提供以下功能:
OpenFile(path="pathname")
示例路径可以是“C:\ Users \ Bob \ Desktop \ Automagica.xlsx”。
4.1.2重命名文件
可以使用以下代码重命名文件:
RenameFile(path="pathname", new_name)
第一个参数是需要更改其名称的文件的路径。第二个变量只是文件必须接收的名称,因此不需要是完整路径。例如,下一行代码将名为“Automagica.pptx”的文件名更改为“Automagica123.pptx”:
RenameFile("C:\Users\Bob\Desktop\Automagica.pptx", "Automagica123.pptx")
请注意,无法更改文件类型的更改:如果第一个参数中的路径以“.pptx”结尾,则新名称也需要以“.pptx”结尾。
4.1.3移动文件
以下函数可用于将文件从一个目录移动到另一个目录:
MoveFile(old_path="old_pathname", new_location="new_location_path")
第一个变量contatain应该移动的文件的路径(这包括文件的名称)。第二个参数包含文件需要移动到的位置的路径(在此路径中,应省略文件名)。如果两个参数中的一个包含不存在的路径,则该函数将不返回任何内容。例如,下一段代码将文件“Automagica.txt”从C:\ Users \ Bob \ Desktop \移动到C:\ Users \ Bob \ Downloads \:
MoveFile("C:\Users\Bob\Desktop\Automagica.txt", "C:\Users\Bob\Downloads")
如果目标位置已包含与需要移动的文件夹名称完全相同的文件夹,则会在名称中添加八个字符的随机uid。例如,如果在前面的示例中位置C:\ Users \ Bob \ Downloads已包含名为“Automagica.txt”的文件并且代码已执行,则它将从C:\ Users \ Bob \ Desktop移动文件夹“Automagica”到C:\ Users \ Bob \ Downloads并将其名称更改为“(be8e4c88)Automagica.txt”。
请注意,添加的字符完全是随机的。作为最佳工作函数的最后一点,重要的是关闭需要移动的文件。
4.1.4复制文件
如果需要将文件从一个目录复制到另一个目录,可以使用以下函数:
MoveFile(old_path="old_pathname", new_location="new_location_path")
输入的工作方式与MoveFile函数完全相同,并且需要关闭复制的文件才能使函数正常工作。另请注意,如果新位置已包含与副本名称完全相同的文件,则它将被复制的文件覆盖。
4.1.5删除文件
以下函数用于从文件夹中删除文件:
RemoveFile(path="pathname")
它将删除具有给定路径名的文件。使用此代码,关闭需要删除的文件同样重要。
4.1.6检查文件是否存在
如果某个文件的路径存在,则Next函数返回True;如果路径不存在则返回False,或者引用文件夹而不是文件。
FileExists(path="pathname")
4.1.7等待文件
以下函数等待,直到创建具有输入路径的文件。
WaitForFile(path="pathname")
4.1.8写入和从文件
可以将列表写入.txt文件或将.txt文件写入列表。这可以通过以下功能完成。
WriteListToFile(list_to_write, file)
此函数将列表写入.txt文件。输入列表的每个元素都写在文本文件的新行中。输入.txt文件时带有路径。如果该路径尚不存在,该函数将在指定的路径上创建一个新的.txt文件并写入。如果路径确实存在,则该函数将列表写入现有文件中。
WriteFileToList(file)
此函数将输入的.txt文件的内容写入列表并返回该列表。.txt文件中的每一个新行都成为列表的新元素。如果输入的路径未附加到.txt文件,则该功能将不起作用。
4.2文件夹操作
可以在文件上执行的大多数操作也可以在文件夹上执行。Automagica提供了一系列功能,可以轻松地对文件夹进行操作。
4.2.1创建文件夹
要在所需位置创建文件夹,可以使用以下功能:
CreateFolder(path="pathname")
此函数创建一个文件夹,其名称和位置在路径中指定。下一段代码通过在位置C:\ Users \ Bob \ Desktop创建名为“Automagica”的文件夹来说明这一原则。
CreateFolder("C:\Users\Bob\Desktop\Automagica")
需要记住的一点是输入的路径必须是唯一的。如果在同一位置已存在同名文件夹,则该功能不执行任何操作。
4.2.2打开文件夹
可以使用以下功能打开文件夹:
OpenFolder(path="pathname")
4.2.3重命名文件夹
使用以下函数重命名文件夹:
RenameFolder(path="pathname", new_name)
第一个变量是需要重命名的文件夹的路径。第二个变量是文件夹必须接收的新名称。下一个代码示例将文件夹的名称从“Automagica”更改为“Automagica123”。该文件夹位于C:\ Users \ Bob \ Desktop。
RenameFolder("C:\Users\Bob\Desktop\Automagica", "Automagica123")
如果新路径已存在,则代码将不返回任何内容。
4.2.4移动文件夹
可以使用下一个功能将文件夹从一个位置移动到另一个位置:
MoveFolder(old_path="pathname", new_location="pathname")
第一个变量contatain应该移动的文件夹的路径(这包括文件夹的名称)。第二个参数包含文件夹需要移动到的位置的路径(在此路径中,应省略移动的文件夹的名称)。如果两个参数中的一个包含不存在的路径,则该函数将不返回任何内容。例如,下一段代码将文件夹“Automagica”从C:\ Users \ Bob \ Desktop \移动到C:\ Users \ Bob \ Downloads \:
MoveFolder("C:\Users\Bob\Desktop\Automagica", "C:\Users\Bob\Downloads")
如果目标位置已包含与需要移动的文件夹名称完全相同的文件夹,则会在名称中添加八个字符的随机uid。例如,如果在前面的示例中位置C:\ Users \ Bob \ Downloads已经包含名为“Automagica”的文件夹并且代码被执行,它将把文件夹“Automagica”从C:\ Users \ Bob \ Desktop移动到C: \ Users \ Bob \ Downloads并将其名称更改为“Automagica(be8e3c88)”。
请注意,添加的字符完全是随机的。作为最佳工作功能的最后一点,重要的是关闭移动文件夹中的所有文件。
4.2.5复制文件夹
可以将文件夹从一个文件夹复制到另一个位置。与文件夹移动的区别在于,在这种情况下,复制的文件夹也保留在原始位置。输入的原理完全类似于文件夹的移动。例如,下一个代码会将名为“Automagica”的文件夹从C:\ Users \ Bob \ Desktop \复制到C:\ Users \ Bob \ Downloads \。
CopyFolder("C:\Users\Bob\Desktop\Automagica", "C:\Users\Bob\Downloads\")
如果目标位置已具有同名文件夹,则该函数将向复制文件夹的名称添加八个字符的随机uid。这与MoveFolder函数完全相同。在此旁边,为了使代码正常工作,需要关闭复制文件夹的所有文件。
4.2.6删除文件夹
下一个功能可以删除文件夹及其所有内容(文件,只读文件,文件夹......)。
RemoveFolder(path="pathname", allow_root=False, delete_read_only=True)
第一个参数应该是需要删除的文件夹的路径。安全变量“allow_root”确保第一个参数超过10个字符。此安全性阻止输入例如“\”作为导致删除根及其所有子目录的路径。要关闭此安全性,请将allow_root明确设置为True。第三个参数使得可以确保该函数在包含只读文件时不删除该文件夹。当“delete_read_only”显式设置为False时,该函数不会删除具有只读文件的文件夹。代码最佳工作的最终要求是需要关闭文件夹中的所有文件。下一个示例说明了该函数的用法。下一行代码将C:\ Users \ Bob \ Desktop \ Automagica文件夹删除为路径。此外,只读文件将被删除,因为变量delete_read_only为True,除非另有明确输入。最后请注意,如果路径长度小于10个字符,代码将不会执行任何操作。
RemoveFolder("C:\Users\Bob\Desktop\Automagica")
以下示例删除给定路径上的文件夹,除非它包含只读文件。安全变量保持为False,因此路径应超过10个字符。
RemoveFolder("C:\Users\Bob\Desktop\Automagica", delete_read_only=False)
4.2.7清空文件夹
可以使用以下功能删除文件夹的内容:
EmptyFolder(path="pathname", allow_root=False)
第一个参数再次指定需要清空的文件夹的路径。allow_root安全变量具有与删除文件夹的功能相同的功能。以下代码行给出了如何清空具有路径C:\ Users \ Bob \ Desktop \ Automagica的文件夹的示例:
"EmptyFolder("C:\Users\Bob\Desktop\Automagica")
要使该功能起作用,请务必关闭该文件夹包含的所有文件。
4.2.8检查文件夹是否存在
下一个函数可以检查指定的路径是否存在。
FolderExists(path="pathname")
如果输入的路径不存在,则该函数将返回False。如果确实存在,则返回True。例如,下一个片段检查路径为C:\ Users \ Bob \ Desktop \ Automagica的文件夹是否存在:
FolderExists("C:\Users\Bob\Desktop\Automagica")
4.2.9ZIP文件夹
以下函数可用于创建现有目录的压缩文件夹:
ZipFolder(folder_path="pathname_folder", new_path="pathname_compressed_folder")
第一个参数是需要压缩的目录的路径名。第二个参数指定带有路径名的压缩文件夹的位置和名称。例如,以下函数使用路径名“C:\ Users \ Bob \ Desktop \ Automagica”来压缩目录。压缩目录由第二个参数指定。
ZipFolder("C:\Users\Bob\Desktop\Automagica","C:\Users\Bob\Downloads\Automagica")
请注意,因为如果已经存在一个带有new_path作为路径名的压缩目录,它将被覆盖。
4.2.10解压缩文件夹
与ZipFolder功能相反的是:
UnZipFolder(path="pathname_zipped_folder", new_path="pathname_target_location")
第一个参数是需要解压缩的压缩文件夹的路径名。第二个参数是可选的。它是将存储解压缩文件夹的目录的路径。如果省略,则解压缩的文件夹将存储在与原始压缩文件夹相同的位置。
4.2.11等待文件夹
以下功能等待,直到创建具有输入路径的文件夹。
WaitForFolder(path="pathname")
6.图像操作
Automagica可以通过多种方式操作图像。可用功能如下所列。
OpenImage(path="pathname")
显示默认映像程序上路径变量指定的映像。
RotateImage(path="pathname", angle)
在指定角度上旋转图像。例如,输入“C:\ Users \ Pictures \ Automagica.jpg”作为路径,角度为90,将图片与给定路径旋转90度。请注意,因为90,180,270,360以外的角度可能会使图像变形。
ResizeImage(path="pathname", size=(1024, 768))
调整path变量指定的图像大小。大小由第二个参数指定。这是一个以像素为单位的宽度和高度的元组。例如ResizeImage(“C:\ Users \ Pictures \ Automagica.jpg”,(300,400))给出的图像宽度为300像素,高度为400像素。
ImageSize(path="pathname")
返回路径指定的图像的大小(以像素为单位)。大小在以下形式的消息框中返回:“(高度,宽度)
CropImage(path="pathname",box=None)
将路径指定的图像裁剪为由box变量确定的区域。这个变量是一个4元组,它定义左,上,右和下像素coördinate,例如:(左,上,右,下)。
ImageFormat(path="pathname")
返回由输入路径指定的图像的格式。例如,输入“C:\ Users \ Pictures \ Automagica.jpg”会返回一个表示JPEG的消息框。
MirrorImageHorizontally(path="pathname")
使用给定路径从左到右镜像图像。
MirrorImageVertically(path="pathname")
使用从上到下的给定路径镜像图像。
7.电邮操作
Automagica可以发送包含您的Hotmail,Gmail或Yahoo邮箱地址的电子邮件。三个功能的输入以相同的方式工作。第一个和第二个参数分别是您的电子邮件地址和用户密码。目标变量是您要联系的电子邮件地址。主题和消息变量分别包含主题和文本消息。端口变量是标准587.在大多数情况下,此参数可以忽略,但在某些情况下需要更改为465.使用Gmail帐户时,有一个例外。谷歌有一项安全功能可以阻止不安全的应用程序。要使此功能正常运行,需要关闭此功能,可以通过以下链接完成:https://myaccount.google.com/lesssecureapps。
SendMailWithHotmail(user="user@hotmail.com", password, destination, subject="", message="", port=587) SendMailWithGmail(user="user@gmail.com", password, destination, subject="", message="", port=587) SendMailWithYahoo(user="user@yahoo.com", password, destination, subject="", message="", port=587)
8.基本操作
1.变量和类型
1.1字符串
字符串是任何有限的字符序列(即字母,数字,符号和标点符号)。字符串用单引号或双引号定义。
automagica_string = "robots" DisplayMessageBox(automagica_string)
1.2字符串操作
将变量添加到字符串
您可以将所有变量添加到字符串中。例如,如果要将字符串添加到字符串,可以通过将整数定义为字符串来实现:
automagica_string = "robot number " automagica_integer = 100 automagica_string2 = automagica_string + int(100) DisplayMessageBox(automagica_string2)
1.3切片串
将[n]添加到字符串将选择第n个字符:
x = "automagica" x[2] >>> t
添加[n:p]会将字符串从字符n切片到p。通过留下n或p out,它将分别选择第一个和最后一个字符:
x = "Hello Robot!" x[:5] >>> Hello
1.4字符串替换
x = "Robots are evil!" x.replace('evil', 'friendly') >>>Robots are friendly!
1.5字符串中的大小写
x = "Robots" #Convert to upper case x.upper() #Convert to lower case x.lower() #Capitalize x.capitalize()
1.6拆分字符串
您可以选择将字符串拆分为某个单词或字符。不要忘记通过添加[0]或[1]来指示是否要保留字符串的第一部分或第二部分,因为拆分会导致字符串变为多个字符串的列表:
x = "Robots will take over the world!" x.split(" over ") >>>['Robots will take', 'the world!'] #Accesing the different strings can be done by: x[0] >>>Robots will take x[1] >>>the world!"
2.数字
2.1整型
整数(简称为int)是一个整数,而不是一个小数,可以是正数,负数或零。
声明并显示整数:
automagica_integer = 5 DisplayMessageBox(automagica_integer)
你可以用整数做基本的数学运算:
automagica_int1 = 5 automagica_int2 = 10 automagica_int3 = automagica_int1 + automagica_int2 = 15 DisplayMessageBox(automagica_int3)
2.2浮点数
浮点数代表实数,用小数点写成整数和小数部分。
automagica_float = 3.1 DisplayMessageBox(automagica_float)
3.数学运算
这里是一个包含基本数学运算的列表,可以与整数和浮点数一起使用。在使用它们之前,需要导入数学模块:
from math import *
abs(x):x的绝对值(x和零之间的(正)距离)
x = -3 abs(x) >>> 3
ceil(x):x的上限(不小于x的最小整数)
x = 4.1 ceil(x) >>> 5
exp(x):x:e x的指数
x = 3 exp(x) >>> 20.085536923187668
floor(x):x的底限:不大于x的最大整数
x = 4.1 floor(x) >>> 4
log(x):x的自然对数,x> 0
x = 10 log(x) >>> 2.302585092994046
max(x1,x2,...)和max(x1,x2,...):其参数的最小和最大值:最接近正无穷大的值
x1 = 2 x2 = 3 max(x1,x2) >>> 3
round(x):x从小数点四舍五入到n位数。
x = 0.5555 round(x, 2) >>> 0.56
sqrt(x):x的平方根,x> 0
x = 9 sqrt(9) >>> 3
4.列表
列表与数组非常相似。它们可以包含任何类型的变量,并且它们可以包含任意数量的变量。列表也可以以非常简单的方式迭代。这里有一些列表用法示例:
list = ["R2-D2", "Terminator", "Optimus Prime","WALL-E", "RoboCop"] list.append("WALL-E") list.append("RoboCop") >>>["R2-D2", "Terminator", "Optimus Prime","WALL-E", "RoboCop"] list[0] >>>R2-D2
5.逻辑运算
5.1 if
一个if语句用于决策。只有当if语句为true时,它才会运行代码体。必须有条件的代码块。
if condition:indentedStatementBlock
一个例子是:
temperature = RequestUserInput() if temperature > 20: DisplayMessageBox("Wear short pants!")
将此示例扩展为多个if语句:
temperature = RequestUserInput() if temperature < 10: DisplayMessageBox("Wear a warm hat!") if temperature > 20: DisplayMessageBox("Wear short pants!") else: DisplayMessageBox("You can wear normal clothes!")
上一个例子将会删除字符串“戴上一顶温暖的帽子!” 如果输入数字低于10.如果数字高于20,输出将是穿短裤!。如果仍未满足条件,这意味着输入数字介于10和20之间,则会激活else语句。在这种情况下,消息将显示“你可以穿正常的衣服!” 。
5.2 for
while循环评估测试表达式。
如果测试表达式为真(非零),则while循环体内的代码将被激活。再次评估测试表达式。该过程一直持续到测试表达式为假。
当测试表达式为false时,while循环终止。
while循环的一个例子:
automagica_count = 0 while (automagica_count < 3): display_string = "Current count is: " + str(automagica_count) DisplayMessageBox(display_string) count = count + 1