#!/usr/bin/env python # coding: utf-8 # ## Módulos *os*, *shutil* e o Objeto *file* # In[48]: import os # In[49]: os.getcwd() # In[50]: os.path.isdir(r"C:\Windows") # In[51]: workdir = os.path.expanduser(r"~\Documents\pycurso") # In[52]: if not os.path.isdir(workdir): os.mkdir(workdir) # In[53]: texto_filename = workdir + "\meu-texto.txt" # In[54]: endl = "\n" with open(texto_filename, "w") as texto_file: texto_file.write("Com Python" + endl) texto_file.write("sou mais feliz" + endl) texto_file.write("-- fim --" + endl) # Lendo arquivo texto: # In[55]: with open(texto_filename, "r") as texto_file: texto_lido = texto_file.readline() print(texto_lido) # In[56]: texto_lido = "" with open(texto_filename, "r") as texto_file: for line in texto_file: texto_lido += line print(texto_lido) # **Forma insegura de abrir um arquivo** # # ```python # texto_file = open(texto_filename) # ``` # Limpando a sujeira: # In[57]: os.rmdir(workdir) # Ops! Diretório não está vazio. Vamos apelar para o módulo *shutil* # In[58]: import shutil shutil.rmtree(workdir) # In[59]: shutil.copy # Links: # # - [Módulo **os**](https://docs.python.org/3.4/library/os.html) # - [Módulo **shutil**](https://docs.python.org/3.4/library/shutil.html) # ## Arquivos Excel # In[19]: import numpy as np import openpyxl # In[30]: m = [] t = [] wb = openpyxl.load_workbook(filename='../resource/well.xlsx') sheet = wb.active sheet.cell("A1").value # In[31]: for row in sheet.rows[1:]: t.append(int(row[0].value)) m.append(row[1].value) t = np.array(t) m = np.array(m) # In[32]: print(t) print(m) # Links: # # - [Módulo **openpyxl**](https://openpyxl.readthedocs.org/en/latest/) # # ## Executando Programas Externos # # Vamos realizar uma Krigagem com o programa [KB2D](http://www.statios.com/Resources/05-kriging.pdf) da [GSLIB](http://www.gslib.com/). Os binários podem ser obtidos neste [link](http://www.statios.com/software/gslib77.zip). # # Para execução de programas externos, utilizaremos o módulo [subprocess](https://docs.python.org/3.4/library/subprocess.html). # # ```python # import subprocess # # subprocess.call("notepad") # if ret == 0: # print("Execução sem erros") # ``` # # No caso de programas em Fortran que utilizam redirecionamento para entrada de dados (como é o caso do **kb2d.exe**), precisamos definir o parâmetro `shell=True` para que a chamada seja feita utilizando o *shell* do sistema: # # ```python # workdir = ... #diretório onde estão os dados e o executável kb2d.exe # # subprocess.call("kb2d.exe < kb2d.par", shell=True, cwd=workdir) # ``` # # Os arquivos de entrada que serão utilizados na krigagem podem ser obtidos no [repositório do curso no GitHub](https://github.com/ESSS/py4eng-course/tree/webinar-2015/cases/kriging). # # ### Exercício 1 - Experimento com Krigagem # # **Parte 1**: Realize a execução do programa **kb2d.exe** com os exemplos disponibilizados e crie uma função que leia o arquivo do resultado da krigagem para um Array. # # Dicas: # # - Utilize a função `split()` para dividir uma linha do arquivo pelos espaços em branco # - Utilize a função `readline()` do objecto *file* para pular o cabeçalho # - O tamanho da malha de krigagem é 25x25. Inicialize seu Array com o tamanho correto # - Use o código abaixo para plotar os resultados # # ```python # result = ... # Resultado lido do arquivo # # xi = np.linspace(0, 25 * 2.0, 25) # yi = np.linspace(0, 25 * 2.0, 25) # plt.contourf(xi, yi, results.reshape(25,25)) # plt.colorbar() # ``` # # ![Resultado da Krigagem](../resource/kriging.png) # # **Parte 2**: Crie um arquivo template e use para disparar krigagens variando os alcances máximos e mínimos (a_max, a_min). # In[ ]: