Win10自动化操作-Automagica

Automagica 是一个开源智能机器人流程自动化(SRPA,Smart Robotic Process Automation)平台,借助 Automagica,自动化跨平台流程变得轻而易举。Automagica 可以通过简单程序脚本实现打开各种应用程序并对应用进行操作。
Automagicaoakwood开源的一个项目, 源码开放在automagica

它基于Python和Tensorflow等开源技术,因此可以轻松接入人工智能领域的最新和重大发展,将其用于日常办公。

Automagica 需要 Python 3.7 环境,官方支持 Windows 10 平台,Linux 和 Mac 目前官方还不支持。

Automagica 使用场景:

  • 桌面交互自动化
  • Office 自动化,例如打开 Excel 并进行数据填充
  • Web 自动化,例如打开网址并进行网页操作
  • 商业应用自动化,支持 SAP、Oracle Apps、Siebel、PeopleSoft 与 Salesforce 等
  • 自动打开邮件应用并收发邮件
  • 远程控制等等

1.鼠标和键盘自动化

1.鼠标

坐标示意.png

1.1GetMouseCoordinates()

以弹框的形式返回当前鼠标的x与y坐标

坐标图.png

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"]

选择用户名:

  1. 绝对路径(请注意,如果HTML仅稍微更改,这将会中断)
  2. 指向表单中的第一个元素
  3. 第一个输入元素,其属性名为“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']")

“清除”按钮可以通过以下方式找到:

  1. 表单元素的第四个输入元素,其属性名为id,值为loginForm
  2. 输入名为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']")

表格可以通过以下方式选择:

  1. 绝对路径(请注意,如果HTML仅稍微更改,这将会中断):
  2. HTML中的第一个表单元素
  3. 表单元素,其属性名为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循环终止。

for.png

while循环的一个例子:

automagica_count = 0 while (automagica_count < 3): display_string = "Current count is: " + str(automagica_count) DisplayMessageBox(display_string) count = count + 1

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 2,682评论 0 8
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,310评论 0 5
  • 概要 64学时 3.5学分 章节安排 电子商务网站概况 HTML5+CSS3 JavaScript Node 电子...
    阿啊阿吖丁阅读 8,618评论 0 3
  • 个人学习批处理的初衷来源于实际工作;在某个迭代版本有个BS(安卓手游模拟器)大需求,从而在测试过程中就重复涉及到...
    Luckykailiu阅读 4,525评论 0 11
  • 今天闲来无事,看了电影《后来的我们》,可能因为是知道结果,所以开始看的时候,心中莫名的就有一种忐忑。 看完了,泪流...
    万花筒里看世界阅读 313评论 0 0